From 56065e7b41053966577b5ea2c21166af2ea37c4e Mon Sep 17 00:00:00 2001 From: Tarek Sherif Date: Mon, 24 Nov 2014 14:35:06 -0500 Subject: [PATCH 1/2] v2.2.0 --- .../brainbrowser.surface-viewer.min.js | 44 ++++++++++++++++++ .../brainbrowser.volume-viewer.min.js | 32 +++++++++++++ .../workers/deindex.worker.js | 31 ++++++++++++ .../workers/freesurferasc.intensity.worker.js | 31 ++++++++++++ .../workers/freesurferasc.worker.js | 31 ++++++++++++ .../workers/freesurferbin.intensity.worker.js | 31 ++++++++++++ .../workers/freesurferbin.worker.js | 31 ++++++++++++ .../brainbrowser-2.2.0/workers/json.worker.js | 31 ++++++++++++ .../workers/mniobj.intensity.worker.js | 31 ++++++++++++ .../workers/mniobj.worker.js | 31 ++++++++++++ .../workers/wavefrontobj.worker.js | 31 ++++++++++++ .../workers/wireframe.worker.js | 31 ++++++++++++ package.json | 2 +- release/brainbrowser-2.2.0.tar.gz | Bin 0 -> 151159 bytes 14 files changed, 387 insertions(+), 1 deletion(-) create mode 100644 build/brainbrowser-2.2.0/brainbrowser.surface-viewer.min.js create mode 100644 build/brainbrowser-2.2.0/brainbrowser.volume-viewer.min.js create mode 100644 build/brainbrowser-2.2.0/workers/deindex.worker.js create mode 100644 build/brainbrowser-2.2.0/workers/freesurferasc.intensity.worker.js create mode 100644 build/brainbrowser-2.2.0/workers/freesurferasc.worker.js create mode 100644 build/brainbrowser-2.2.0/workers/freesurferbin.intensity.worker.js create mode 100644 build/brainbrowser-2.2.0/workers/freesurferbin.worker.js create mode 100644 build/brainbrowser-2.2.0/workers/json.worker.js create mode 100644 build/brainbrowser-2.2.0/workers/mniobj.intensity.worker.js create mode 100644 build/brainbrowser-2.2.0/workers/mniobj.worker.js create mode 100644 build/brainbrowser-2.2.0/workers/wavefrontobj.worker.js create mode 100644 build/brainbrowser-2.2.0/workers/wireframe.worker.js create mode 100644 release/brainbrowser-2.2.0.tar.gz diff --git a/build/brainbrowser-2.2.0/brainbrowser.surface-viewer.min.js b/build/brainbrowser-2.2.0/brainbrowser.surface-viewer.min.js new file mode 100644 index 00000000..69f2c80b --- /dev/null +++ b/build/brainbrowser-2.2.0/brainbrowser.surface-viewer.min.js @@ -0,0 +1,44 @@ +/* +* BrainBrowser: Web-based Neurological Visualization Tools +* (https://brainbrowser.cbrain.mcgill.ca) +* +* Copyright (C) 2011 +* The Royal Institution for the Advancement of Learning +* McGill University +* +* This program is free software: you can redistribute it and/or modify +* it under the terms of the GNU Affero General Public License as +* published by the Free Software Foundation, either version 3 of the +* License, or (at your option) any later version. +* +* This program is distributed in the hope that it will be useful, +* but WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +* GNU Affero General Public License for more details. +* +* You should have received a copy of the GNU Affero General Public License +* along with this program. If not, see . +*/ + +/* +* BrainBrowser v2.2.0 +* +* Author: Tarek Sherif (http://tareksherif.ca/) +* Author: Nicolas Kassis +* Author: Paul Mougel +* +* three.js (c) 2010-2014 three.js authors, used under the MIT license*/ +!function(){"use strict";var a="2.2.0";a=a.indexOf("BRAINBROWSER_VERSION")>0?"D.E.V":a,window.BrainBrowser={version:a},window.requestAnimationFrame=window.requestAnimationFrame||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame||window.oRequestAnimationFrame||window.msRequestAnimationFrame||function(a){return window.setTimeout(a,1e3/60)},window.cancelAnimationFrame=window.cancelAnimationFrame||function(a){window.clearTimeout(a)}}(),function(){"use strict";function a(b,c,d,e){return c>d?e(b):void Object.keys(b).forEach(function(f){a(b[f],c+1,d,e)})}BrainBrowser.createTreeStore=function(){var b={};return{set:function(){var a,c,d,e,f=arguments[arguments.length-1],g=Array.prototype.slice.call(arguments,0,arguments.length-1),h=b;for(c=0,d=g.length-1;d>c;c++){if(a=g[c],h[a]&&"object"!=typeof h[a])throw e="Hash key '["+g.slice(0,c+1).join("][")+"]' has already been set to a non-object value.\nCannot set '["+g.join("][")+"]'",BrainBrowser.events.triggerEvent("error",{message:e}),new Error(e);h[a]||(h[a]={}),h=h[a]}a=g[c],h[a]=f},get:function(){var a,c,d,e=Array.prototype.slice.call(arguments),f=b;if(0===e.length)return b;for(c=0,d=e.length-1;d>c;c++){if(a=e[c],void 0===f[a])return null;f=f[a]}return a=e[c],void 0!==f[a]?f[a]:null},remove:function(){var a,c,d,e,f=Array.prototype.slice.call(arguments),g=b;for(c=0,d=f.length-1;d>c;c++){if(a=f[c],void 0===g[a])return null;g=g[a]}return a=f[c],e=g[a],g[a]=void 0,e},reset:function(a){a=a&&"object"==typeof a?a:{},b=a},forEach:function(c,d){c=c>0?c:1,a(b,1,c,d)}}}}(),function(){"use strict";BrainBrowser.createColorMap=function(a,b){function c(a,b,c,d,e,f,g){var h;return(b>a||a>c)&&!e?-1:(h=Math.floor(Math.max(0,Math.min((a-b)*d,g-1))),f&&(h=g-1-h),h*=4)}function d(a,b,c){var d,e,f,g=document.createElement("canvas"),h=new Array(256);for(g.width=256,g.height=c,d=0;256>d;d++)h[d]=d;for(f=r.scale,r.scale=255,a=r.mapColors(h),r.scale=f,e=g.getContext("2d"),d=0;256>d;d++)e.fillStyle="rgb("+Math.floor(a[4*d])+", "+Math.floor(a[4*d+1])+", "+Math.floor(a[4*d+2])+")",e.fillRect(d,0,1,b);return g}b=b||{};var e,f,g,h,i,j,k,l,m=void 0===b.clamp?!0:b.clamp,n=b.flip||!1,o=b.scale||1,p=b.contrast||1,q=b.brightness||0;if(a)for(f=a.trim().split(/\n/),e=new Float32Array(4*f.length),k=0,i=0,g=f.length;g>i;i++)if(l=f[i].trim().split(/\s+/).slice(0,4),h=l.length,!(3>h)){for(j=0;h>j;j++)e[k+j]=parseFloat(l[j]);4>h&&(e[k+3]=1),k+=4}var r={colors:e,clamp:m,flip:n,scale:o,contrast:p,brightness:q,mapColors:function(a,b){b=b||{};var d,e,f,g,h,i,j=void 0===b.min?0:b.min,k=void 0===b.max?255:b.max,l=b.default_colors||[0,0,0,1],m=b.destination||new Float32Array(4*a.length),n=r.colors,o=r.colors.length/4,p=void 0===b.scale?r.scale:b.scale,q=void 0===b.clamp?r.clamp:b.clamp,s=void 0===b.flip?r.flip:b.flip,t=void 0===b.brightness?r.brightness:b.brightness,u=void 0===b.contrast?r.contrast:b.contrast,v=4===l.length?0:1,w=k-j,x=o/w;for(t*=p,u*=p,e=0,h=a.length;h>e;e++)d=a[e],f=4*e,i=c(d,j,k,x,q,s,o),0>i?(g=f*v,m[f]=u*l[g]+t,m[f+1]=u*l[g+1]+t,m[f+2]=u*l[g+2]+t,m[f+3]=p*l[g+3]):(m[f]=u*n[i]+t,m[f+1]=u*n[i+1]+t,m[f+2]=u*n[i+2]+t,m[f+3]=p*n[i+3]);return m},colorFromValue:function(a,b){b=b||{};var d,e=b.hex||!1,f=void 0===b.min?0:b.min,g=void 0===b.max?255:b.max,h=void 0===b.scale?r.scale:b.scale,i=void 0===b.brightness?r.brightness:b.brightness,j=void 0===b.contrast?r.contrast:b.contrast,k=g-f,l=r.colors.length/4,m=l/k,n=c(a,f,g,m,r.clamp,r.flip,l);return d=n>=0?Array.prototype.slice.call(r.colors,n,n+4):[0,0,0,1],d[0]=Math.max(0,Math.min(j*d[0]+i,1)),d[1]=Math.max(0,Math.min(j*d[1]+i,1)),d[2]=Math.max(0,Math.min(j*d[2]+i,1)),e?(d[0]=Math.floor(255*d[0]),d[1]=Math.floor(255*d[1]),d[2]=Math.floor(255*d[2]),d[3]=Math.floor(255*d[3]),d[0]=("0"+d[0].toString(16)).slice(-2),d[1]=("0"+d[1].toString(16)).slice(-2),d[2]=("0"+d[2].toString(16)).slice(-2),d=d.slice(0,3).join("")):(d[0]=d[0]*h,d[1]=d[1]*h,d[2]=d[2]*h,d[3]=d[3]*h),d},createElement:function(a,b){var c,e,f=r.colors,g=b-a;return c=d(f,20,40,n),e=c.getContext("2d"),e.fillStyle="#FFA000",e.fillRect(.5,20,1,10),e.fillText(a.toPrecision(3),.5,40),e.fillRect(c.width/4,20,1,10),e.fillText((a+.25*g).toPrecision(3),.25*c.width,40),e.fillRect(c.width/2,20,1,10),e.fillText((a+.5*g).toPrecision(3),.5*c.width,40),e.fillRect(3*c.width/4,20,1,10),e.fillText((a+.75*g).toPrecision(3),.75*c.width,40),e.fillRect(c.width-.5,20,1,10),e.fillText(b.toPrecision(3),c.width-20,40),c}};return r}}(),function(){"use strict";var a=BrainBrowser.createTreeStore();BrainBrowser.config={set:function(b,c){b=b||"";var d=b.split(".");d.push(c),a.set.apply(a,d)},get:function(b){b=b||"";var c=b.split(".");return a.get.apply(a,c)}}}(),function(){"use strict";function a(a,b){try{a.call(b.target,b)}catch(c){console.error("Error in event handler for: ",b.name),console.error(c.stack||c.message||c)}}var b=["eventmodelcleanup"];BrainBrowser.events={unpropagatedEvent:function(a){b.push(a)},addEventModel:function(c){var d=[],e={};c.addEventListener=function(a,b){d[a]||(d[a]=[]),d[a].push(b)},c.triggerEvent=function(e,f){var g=this,h=c.directPropagationTargets(e);f=f||{},f.name=e,f.target=g,d[e]&&d[e].forEach(function(b){a(b,f)}),d["*"]&&d["*"].forEach(function(b){a(b,f)}),-1===b.indexOf(e)&&(h.forEach(function(a){a.triggerEvent.call(g,e,f)}),0===h.length&&c!==BrainBrowser.events&&BrainBrowser.events.triggerEvent.call(g,e,f))},c.propagateEventTo=function(a,b){if(!BrainBrowser.utils.isFunction(b.allPropagationTargets))throw new Error("Propagation target doesn't seem to have an event model.");if(c===BrainBrowser.events||-1!==b.allPropagationTargets(a).indexOf(c))throw new Error("Propagating event '"+a+"' would cause a cycle.");e[a]=e[a]||[],-1===c.directPropagationTargets().indexOf(b)&&b.addEventListener("eventmodelcleanup",function(){this===b&&c.stopPropagatingTo(b)}),-1===e[a].indexOf(b)&&e[a].push(b)},c.propagateEventFrom=function(a,b){b.propagateEventTo(a,c)},c.stopPropagatingTo=function(a){Object.keys(e).forEach(function(b){e[b]=e[b].filter(function(b){return b!==a})})},c.directPropagationTargets=function(a){var b=[],c=void 0===a?Object.keys(e):[a,"*"];return c.forEach(function(a){var c=e[a]||[];c.forEach(function(a){-1===b.indexOf(a)&&b.push(a)})}),b},c.allPropagationTargets=function(a){var b=c.directPropagationTargets(a),d=Array.prototype.slice.call(b);return b.forEach(function(b){b.allPropagationTargets(a).forEach(function(a){-1===d.indexOf(a)&&d.push(a)})}),d}}},BrainBrowser.events.addEventModel(BrainBrowser.events)}(),function(){"use strict";var a=BrainBrowser.loader={loadFromURL:function(b,c,d){d=d||{};var e,f=new XMLHttpRequest,g=d.result_type,h=b.split("/"),i=h[h.length-1];f.open("GET",b),"arraybuffer"===g&&(f.responseType="arraybuffer"),f.onreadystatechange=function(){if(4===f.readyState){if(e=f.status,!(e>=200&&300>e||304===e)){var g="error loading URL: "+b+"\nHTTP Response: "+f.status+"\nHTTP Status: "+f.statusText+"\nResponse was: \n"+f.response;throw BrainBrowser.events.triggerEvent("error",{message:g}),new Error(g)}a.checkCancel(d)||c(f.response,i,d)}},f.send()},loadFromFile:function(a,b,c){var d=a.files;if(0!==d.length){c=c||{};var e=c.result_type,f=new FileReader,g=a.value.split("\\"),h=g[g.length-1];f.file=d[0],f.onloadend=function(a){b(a.target.result,h,c)},f.onerror=function(){var a="error reading file: "+h;throw BrainBrowser.events.triggerEvent("error",{message:a}),new Error(a)},"arraybuffer"===e?f.readAsArrayBuffer(d[0]):f.readAsText(d[0])}},loadColorMapFromURL:function(b,c,d){a.loadFromURL(b,function(a,b,d){c(BrainBrowser.createColorMap(a,d),b,d)},d)},loadColorMapFromFile:function(b,c,d){a.loadFromFile(b,function(a,b,d){c(BrainBrowser.createColorMap(a,d),b,d)},d)},checkCancel:function(a){a=a||{},BrainBrowser.utils.isFunction(a)&&(a={test:a});var b=a.test,c=a.cleanup,d=!1;return b&&b()&&(d=!0,c&&c()),d}}}(),function(){"use strict";BrainBrowser.utils={canvasEnabled:function(){return!!document.createElement("canvas")},webglEnabled:function(){var a=document.createElement("canvas");try{return!(!a||!window.WebGLRenderingContext||!a.getContext("webgl")&&!a.getContext("experimental-webgl"))}catch(b){return!1}},webWorkersEnabled:function(){return!!window.Worker},webGLErrorMessage:function(){var a,b='BrainBrowser requires WebGL.
';return b+=window.WebGLRenderingContext?"Your browser seems to support it, but it is
disabled or unavailable.
":"Your browser does not seem to support it.
",b+='Test your browser\'s WebGL support here.',a=document.createElement("div"),a.id="webgl-error",a.innerHTML=b,a},isFunction:function(a){return a instanceof Function||"function"==typeof a},isNumeric:function(a){return!isNaN(parseFloat(a))},createDataURL:function(a,b){if(!window.URL||!window.URL.createObjectURL)throw new Error("createDataURL requires URL.createObjectURL which does not seem to be available is this browser.");return window.URL.createObjectURL(new Blob([a],{type:b||"text/plain"}))},min:function(){var a=Array.prototype.slice.call(arguments);a=1===a.length&&BrainBrowser.utils.isNumeric(a[0].length)?a[0]:a;var b,c,d=a[0];for(b=1,c=a.length;c>b;b++)a[b]b;b++)a[b]>d&&(d=a[b]);return d},getOffset:function(a){for(var b=0,c=0;a.offsetParent;)b+=a.offsetTop,c+=a.offsetLeft,a=a.offsetParent;return{top:b,left:c}},captureMouse:function(a){var b={x:0,y:0,left:!1,middle:!1,right:!1};return document.addEventListener("mousemove",function(c){var d,e,f=BrainBrowser.utils.getOffset(a);void 0!==c.pageX?(d=c.pageX,e=c.pageY):(d=c.clientX+window.pageXOffset,e=c.clientY+window.pageYOffset),b.x=d-f.left,b.y=e-f.top},!1),a.addEventListener("mousedown",function(a){a.preventDefault(),0===a.button&&(b.left=!0),1===a.button&&(b.middle=!0),2===a.button&&(b.right=!0)},!1),a.addEventListener("mouseup",function(a){a.preventDefault(),0===a.button&&(b.left=!1),1===a.button&&(b.middle=!1),2===a.button&&(b.right=!1)},!1),a.addEventListener("mouseleave",function(a){a.preventDefault(),b.left=b.middle=b.right=!1},!1),a.addEventListener("contextmenu",function(a){a.preventDefault()},!1),b},captureTouch:function(a){function b(b){var d,e,f,g,h,i=BrainBrowser.utils.getOffset(a);for(c.length=g=b.touches.length,f=0;g>f;f++)h=b.touches[f],void 0!==h.pageX?(d=h.pageX,e=h.pageY):(d=h.clientX+window.pageXOffset,e=h.clientY+window.pageYOffset),c[f]=c[f]||{},c[f].x=d-i.left,c[f].y=e-i.top}var c=[];return a.addEventListener("touchstart",b,!1),a.addEventListener("touchmove",b,!1),a.addEventListener("touchend",b,!1),c}}}(),function(){"use strict";function a(a){var c,d=BrainBrowser.config.get("worker_dir");if(null===d)throw c="error in SurfaceViewer configuration.\nBrainBrowser configuration parameter 'worker_dir' not defined.\nUse 'BrainBrowser.config.set(\"worker_dir\", ...)' to set it.",BrainBrowser.events.triggerEvent("error",{message:c}),new Error(c);var e,f={deindex:"deindex.worker.js",wireframe:"wireframe.worker.js"},g=0,h=BrainBrowser.config.get("model_types"),i=BrainBrowser.config.get("intensity_data_types");return null!==h&&Object.keys(h).forEach(function(a){f[a+"_model"]=h[a].worker}),null!==i&&Object.keys(i).forEach(function(a){f[a+"_intensity"]=i[a].worker}),e=Object.keys(f),0===e.length?void a():void(window.URL&&window.URL.createObjectURL?e.forEach(function(c){var h,i=d+"/"+f[c],j=new XMLHttpRequest;j.open("GET",i),j.onreadystatechange=function(){4===j.readyState&&(h=j.status,b.worker_urls[c]=h>=200&&300>h||304===h?BrainBrowser.utils.createDataURL(j.response,"application/javascript"):i,++g===e.length&&a())},j.send()}):(e.forEach(function(a){b.worker_urls[a]=d+"/"+f[a]}),a()))}var b=BrainBrowser.SurfaceViewer={start:function(c,d){if(console.log("BrainBrowser Surface Viewer v"+BrainBrowser.version),!BrainBrowser.utils.webWorkersEnabled())return void alert("Can't find web workers. Exiting.");if(!BrainBrowser.utils.webglEnabled())return void alert("Can't get WebGL context. Exiting.");var e,f={};e="string"==typeof c?document.getElementById(c):c;var g={dom_element:e,model:null,model_data:null,mouse:BrainBrowser.utils.captureMouse(e),touches:BrainBrowser.utils.captureTouch(e),updated:!0,zoom:1,autorotate:{x:!1,y:!1,z:!1},getAttribute:function(a){return f[a]},setAttribute:function(a,b){f[a]=b},getVertex:function(a,c){c=c||{};var d=g.model_data.get(c.model_name).vertices,e=3*a;return new b.THREE.Vector3(d[e],d[e+1],d[e+2])}};return Object.keys(b.modules).forEach(function(a){b.modules[a](g)}),BrainBrowser.events.addEventModel(g),BrainBrowser.events.addEventListener("*",function(a){"draw"!==a&&(g.updated=!0)}),a(function(){d(g)}),g}};b.modules={},b.worker_urls={},BrainBrowser.config.set("model_types.json.worker","json.worker.js"),BrainBrowser.config.set("model_types.mniobj.worker","mniobj.worker.js"),BrainBrowser.config.set("model_types.wavefrontobj.worker","wavefrontobj.worker.js"),BrainBrowser.config.set("model_types.freesurferbin.worker","freesurferbin.worker.js"),BrainBrowser.config.set("model_types.freesurferbin.binary",!0),BrainBrowser.config.set("model_types.freesurferasc.worker","freesurferasc.worker.js"),BrainBrowser.config.set("intensity_data_types.mniobj.worker","mniobj.intensity.worker.js"),BrainBrowser.config.set("intensity_data_types.freesurferbin.worker","freesurferbin.intensity.worker.js"),BrainBrowser.config.set("intensity_data_types.freesurferbin.binary",!0),BrainBrowser.config.set("intensity_data_types.freesurferasc.worker","freesurferasc.intensity.worker.js")}(),BrainBrowser.SurfaceViewer.parseIntensityData=function(a,b,c){"use strict";var d,e=b+"_intensity";if(!BrainBrowser.SurfaceViewer.worker_urls[e])throw d="error in SurfaceViewer configuration.\nIntensity data worker URL for "+b+" not defined.\nUse 'BrainBrowser.config.set(\"intensity_data_types."+b+".worker\", ...)' to set it.",BrainBrowser.events.triggerEvent("error",{message:d}),new Error(d);var f=new Worker(BrainBrowser.SurfaceViewer.worker_urls[e]);f.addEventListener("message",function(a){c(a.data),f.terminate()}),f.postMessage({cmd:"parse",data:a})},function(){"use strict";var a=BrainBrowser.SurfaceViewer.THREE={REVISION:"66"};self.console=self.console||{info:function(){},log:function(){},debug:function(){},warn:function(){},error:function(){}},function(){for(var a=0,b=["ms","moz","webkit","o"],c=0;c>16&255)/255,this.g=(a>>8&255)/255,this.b=(255&a)/255,this},setRGB:function(a,b,c){return this.r=a,this.g=b,this.b=c,this},setHSL:function(a,b,c){if(0===b)this.r=this.g=this.b=c;else{var d=function(a,b,c){return 0>c&&(c+=1),c>1&&(c-=1),1/6>c?a+6*(b-a)*c:.5>c?b:2/3>c?a+6*(b-a)*(2/3-c):a},e=.5>=c?c*(1+b):c+b-c*b,f=2*c-e;this.r=d(f,e,a+1/3),this.g=d(f,e,a),this.b=d(f,e,a-1/3)}return this},setStyle:function(b){if(/^rgb\((\d+), ?(\d+), ?(\d+)\)$/i.test(b)){var c=/^rgb\((\d+), ?(\d+), ?(\d+)\)$/i.exec(b);return this.r=Math.min(255,parseInt(c[1],10))/255,this.g=Math.min(255,parseInt(c[2],10))/255,this.b=Math.min(255,parseInt(c[3],10))/255,this}if(/^rgb\((\d+)\%, ?(\d+)\%, ?(\d+)\%\)$/i.test(b)){var c=/^rgb\((\d+)\%, ?(\d+)\%, ?(\d+)\%\)$/i.exec(b);return this.r=Math.min(100,parseInt(c[1],10))/100,this.g=Math.min(100,parseInt(c[2],10))/100,this.b=Math.min(100,parseInt(c[3],10))/100,this}if(/^\#([0-9a-f]{6})$/i.test(b)){var c=/^\#([0-9a-f]{6})$/i.exec(b);return this.setHex(parseInt(c[1],16)),this}if(/^\#([0-9a-f])([0-9a-f])([0-9a-f])$/i.test(b)){var c=/^\#([0-9a-f])([0-9a-f])([0-9a-f])$/i.exec(b);return this.setHex(parseInt(c[1]+c[1]+c[2]+c[2]+c[3]+c[3],16)),this}return/^(\w+)$/i.test(b)?(this.setHex(a.ColorKeywords[b]),this):void 0},copy:function(a){return this.r=a.r,this.g=a.g,this.b=a.b,this},copyGammaToLinear:function(a){return this.r=a.r*a.r,this.g=a.g*a.g,this.b=a.b*a.b,this},copyLinearToGamma:function(a){return this.r=Math.sqrt(a.r),this.g=Math.sqrt(a.g),this.b=Math.sqrt(a.b),this},convertGammaToLinear:function(){var a=this.r,b=this.g,c=this.b;return this.r=a*a,this.g=b*b,this.b=c*c,this},convertLinearToGamma:function(){return this.r=Math.sqrt(this.r),this.g=Math.sqrt(this.g),this.b=Math.sqrt(this.b),this},getHex:function(){return 255*this.r<<16^255*this.g<<8^255*this.b<<0},getHexString:function(){return("000000"+this.getHex().toString(16)).slice(-6)},getHSL:function(a){var b,c,d=a||{h:0,s:0,l:0},e=this.r,f=this.g,g=this.b,h=Math.max(e,f,g),i=Math.min(e,f,g),j=(i+h)/2;if(i===h)b=0,c=0;else{var k=h-i;switch(c=.5>=j?k/(h+i):k/(2-h-i),h){case e:b=(f-g)/k+(g>f?6:0);break;case f:b=(g-e)/k+2;break;case g:b=(e-f)/k+4}b/=6}return d.h=b,d.s=c,d.l=j,d},getStyle:function(){return"rgb("+(255*this.r|0)+","+(255*this.g|0)+","+(255*this.b|0)+")"},offsetHSL:function(a,b,c){var d=this.getHSL();return d.h+=a,d.s+=b,d.l+=c,this.setHSL(d.h,d.s,d.l),this},add:function(a){return this.r+=a.r,this.g+=a.g,this.b+=a.b,this},addColors:function(a,b){return this.r=a.r+b.r,this.g=a.g+b.g,this.b=a.b+b.b,this},addScalar:function(a){return this.r+=a,this.g+=a,this.b+=a,this},multiply:function(a){return this.r*=a.r,this.g*=a.g,this.b*=a.b,this},multiplyScalar:function(a){return this.r*=a,this.g*=a,this.b*=a,this},lerp:function(a,b){return this.r+=(a.r-this.r)*b,this.g+=(a.g-this.g)*b,this.b+=(a.b-this.b)*b,this},equals:function(a){return a.r===this.r&&a.g===this.g&&a.b===this.b},fromArray:function(a){return this.r=a[0],this.g=a[1],this.b=a[2],this},toArray:function(){return[this.r,this.g,this.b]},clone:function(){return(new a.Color).setRGB(this.r,this.g,this.b)}},a.ColorKeywords={aliceblue:15792383,antiquewhite:16444375,aqua:65535,aquamarine:8388564,azure:15794175,beige:16119260,bisque:16770244,black:0,blanchedalmond:16772045,blue:255,blueviolet:9055202,brown:10824234,burlywood:14596231,cadetblue:6266528,chartreuse:8388352,chocolate:13789470,coral:16744272,cornflowerblue:6591981,cornsilk:16775388,crimson:14423100,cyan:65535,darkblue:139,darkcyan:35723,darkgoldenrod:12092939,darkgray:11119017,darkgreen:25600,darkgrey:11119017,darkkhaki:12433259,darkmagenta:9109643,darkolivegreen:5597999,darkorange:16747520,darkorchid:10040012,darkred:9109504,darksalmon:15308410,darkseagreen:9419919,darkslateblue:4734347,darkslategray:3100495,darkslategrey:3100495,darkturquoise:52945,darkviolet:9699539,deeppink:16716947,deepskyblue:49151,dimgray:6908265,dimgrey:6908265,dodgerblue:2003199,firebrick:11674146,floralwhite:16775920,forestgreen:2263842,fuchsia:16711935,gainsboro:14474460,ghostwhite:16316671,gold:16766720,goldenrod:14329120,gray:8421504,green:32768,greenyellow:11403055,grey:8421504,honeydew:15794160,hotpink:16738740,indianred:13458524,indigo:4915330,ivory:16777200,khaki:15787660,lavender:15132410,lavenderblush:16773365,lawngreen:8190976,lemonchiffon:16775885,lightblue:11393254,lightcoral:15761536,lightcyan:14745599,lightgoldenrodyellow:16448210,lightgray:13882323,lightgreen:9498256,lightgrey:13882323,lightpink:16758465,lightsalmon:16752762,lightseagreen:2142890,lightskyblue:8900346,lightslategray:7833753,lightslategrey:7833753,lightsteelblue:11584734,lightyellow:16777184,lime:65280,limegreen:3329330,linen:16445670,magenta:16711935,maroon:8388608,mediumaquamarine:6737322,mediumblue:205,mediumorchid:12211667,mediumpurple:9662683,mediumseagreen:3978097,mediumslateblue:8087790,mediumspringgreen:64154,mediumturquoise:4772300,mediumvioletred:13047173,midnightblue:1644912,mintcream:16121850,mistyrose:16770273,moccasin:16770229,navajowhite:16768685,navy:128,oldlace:16643558,olive:8421376,olivedrab:7048739,orange:16753920,orangered:16729344,orchid:14315734,palegoldenrod:15657130,palegreen:10025880,paleturquoise:11529966,palevioletred:14381203,papayawhip:16773077,peachpuff:16767673,peru:13468991,pink:16761035,plum:14524637,powderblue:11591910,purple:8388736,red:16711680,rosybrown:12357519,royalblue:4286945,saddlebrown:9127187,salmon:16416882,sandybrown:16032864,seagreen:3050327,seashell:16774638,sienna:10506797,silver:12632256,skyblue:8900331,slateblue:6970061,slategray:7372944,slategrey:7372944,snow:16775930,springgreen:65407,steelblue:4620980,tan:13808780,teal:32896,thistle:14204888,tomato:16737095,turquoise:4251856,violet:15631086,wheat:16113331,white:16777215,whitesmoke:16119285,yellow:16776960,yellowgreen:10145074},a.Quaternion=function(a,b,c,d){this._x=a||0,this._y=b||0,this._z=c||0,this._w=void 0!==d?d:1},a.Quaternion.prototype={constructor:a.Quaternion,_x:0,_y:0,_z:0,_w:0,_euler:void 0,_updateEuler:function(){void 0!==this._euler&&this._euler.setFromQuaternion(this,void 0,!1)},get x(){return this._x},set x(a){this._x=a,this._updateEuler()},get y(){return this._y},set y(a){this._y=a,this._updateEuler()},get z(){return this._z},set z(a){this._z=a,this._updateEuler()},get w(){return this._w},set w(a){this._w=a,this._updateEuler()},set:function(a,b,c,d){return this._x=a,this._y=b,this._z=c,this._w=d,this._updateEuler(),this},copy:function(a){return this._x=a._x,this._y=a._y,this._z=a._z,this._w=a._w,this._updateEuler(),this},setFromEuler:function(b,c){if(b instanceof a.Euler==!1)throw new Error("ERROR: Quaternion's .setFromEuler() now expects a Euler rotation rather than a Vector3 and order. Please update your code.");var d=Math.cos(b._x/2),e=Math.cos(b._y/2),f=Math.cos(b._z/2),g=Math.sin(b._x/2),h=Math.sin(b._y/2),i=Math.sin(b._z/2);return"XYZ"===b.order?(this._x=g*e*f+d*h*i,this._y=d*h*f-g*e*i,this._z=d*e*i+g*h*f,this._w=d*e*f-g*h*i):"YXZ"===b.order?(this._x=g*e*f+d*h*i,this._y=d*h*f-g*e*i,this._z=d*e*i-g*h*f,this._w=d*e*f+g*h*i):"ZXY"===b.order?(this._x=g*e*f-d*h*i,this._y=d*h*f+g*e*i,this._z=d*e*i+g*h*f,this._w=d*e*f-g*h*i):"ZYX"===b.order?(this._x=g*e*f-d*h*i,this._y=d*h*f+g*e*i,this._z=d*e*i-g*h*f,this._w=d*e*f+g*h*i):"YZX"===b.order?(this._x=g*e*f+d*h*i,this._y=d*h*f+g*e*i,this._z=d*e*i-g*h*f,this._w=d*e*f-g*h*i):"XZY"===b.order&&(this._x=g*e*f-d*h*i,this._y=d*h*f-g*e*i,this._z=d*e*i+g*h*f,this._w=d*e*f+g*h*i),c!==!1&&this._updateEuler(),this},setFromAxisAngle:function(a,b){var c=b/2,d=Math.sin(c);return this._x=a.x*d,this._y=a.y*d,this._z=a.z*d,this._w=Math.cos(c),this._updateEuler(),this},setFromRotationMatrix:function(a){var b,c=a.elements,d=c[0],e=c[4],f=c[8],g=c[1],h=c[5],i=c[9],j=c[2],k=c[6],l=c[10],m=d+h+l;return m>0?(b=.5/Math.sqrt(m+1),this._w=.25/b,this._x=(k-i)*b,this._y=(f-j)*b,this._z=(g-e)*b):d>h&&d>l?(b=2*Math.sqrt(1+d-h-l),this._w=(k-i)/b,this._x=.25*b,this._y=(e+g)/b,this._z=(f+j)/b):h>l?(b=2*Math.sqrt(1+h-d-l),this._w=(f-j)/b,this._x=(e+g)/b,this._y=.25*b,this._z=(i+k)/b):(b=2*Math.sqrt(1+l-d-h),this._w=(g-e)/b,this._x=(f+j)/b,this._y=(i+k)/b,this._z=.25*b),this._updateEuler(),this},inverse:function(){return this.conjugate().normalize(),this},conjugate:function(){return this._x*=-1,this._y*=-1,this._z*=-1,this._updateEuler(),this},lengthSq:function(){return this._x*this._x+this._y*this._y+this._z*this._z+this._w*this._w},length:function(){return Math.sqrt(this._x*this._x+this._y*this._y+this._z*this._z+this._w*this._w)},normalize:function(){var a=this.length();return 0===a?(this._x=0,this._y=0,this._z=0,this._w=1):(a=1/a,this._x=this._x*a,this._y=this._y*a,this._z=this._z*a,this._w=this._w*a),this},multiply:function(a,b){return void 0!==b?(console.warn("DEPRECATED: Quaternion's .multiply() now only accepts one argument. Use .multiplyQuaternions( a, b ) instead."),this.multiplyQuaternions(a,b)):this.multiplyQuaternions(this,a)},multiplyQuaternions:function(a,b){var c=a._x,d=a._y,e=a._z,f=a._w,g=b._x,h=b._y,i=b._z,j=b._w;return this._x=c*j+f*g+d*i-e*h,this._y=d*j+f*h+e*g-c*i,this._z=e*j+f*i+c*h-d*g,this._w=f*j-c*g-d*h-e*i,this._updateEuler(),this},multiplyVector3:function(a){return console.warn("DEPRECATED: Quaternion's .multiplyVector3() has been removed. Use is now vector.applyQuaternion( quaternion ) instead."),a.applyQuaternion(this)},slerp:function(a,b){var c=this._x,d=this._y,e=this._z,f=this._w,g=f*a._w+c*a._x+d*a._y+e*a._z;if(0>g?(this._w=-a._w,this._x=-a._x,this._y=-a._y,this._z=-a._z,g=-g):this.copy(a),g>=1)return this._w=f,this._x=c,this._y=d,this._z=e,this;var h=Math.acos(g),i=Math.sqrt(1-g*g);if(Math.abs(i)<.001)return this._w=.5*(f+this._w),this._x=.5*(c+this._x),this._y=.5*(d+this._y),this._z=.5*(e+this._z),this;var j=Math.sin((1-b)*h)/i,k=Math.sin(b*h)/i;return this._w=f*j+this._w*k,this._x=c*j+this._x*k,this._y=d*j+this._y*k,this._z=e*j+this._z*k,this._updateEuler(),this},equals:function(a){return a._x===this._x&&a._y===this._y&&a._z===this._z&&a._w===this._w},fromArray:function(a){return this._x=a[0],this._y=a[1],this._z=a[2],this._w=a[3],this._updateEuler(),this},toArray:function(){return[this._x,this._y,this._z,this._w]},clone:function(){return new a.Quaternion(this._x,this._y,this._z,this._w)}},a.Quaternion.slerp=function(a,b,c,d){return c.copy(a).slerp(b,d)},a.Vector2=function(a,b){this.x=a||0,this.y=b||0},a.Vector2.prototype={constructor:a.Vector2,set:function(a,b){return this.x=a,this.y=b,this},setX:function(a){return this.x=a,this},setY:function(a){return this.y=a,this},setComponent:function(a,b){switch(a){case 0:this.x=b;break;case 1:this.y=b;break;default:throw new Error("index is out of range: "+a)}},getComponent:function(a){switch(a){case 0:return this.x;case 1:return this.y;default:throw new Error("index is out of range: "+a)}},copy:function(a){return this.x=a.x,this.y=a.y,this},add:function(a,b){return void 0!==b?(console.warn("DEPRECATED: Vector2's .add() now only accepts one argument. Use .addVectors( a, b ) instead."),this.addVectors(a,b)):(this.x+=a.x,this.y+=a.y,this)},addVectors:function(a,b){return this.x=a.x+b.x,this.y=a.y+b.y,this},addScalar:function(a){return this.x+=a,this.y+=a,this},sub:function(a,b){return void 0!==b?(console.warn("DEPRECATED: Vector2's .sub() now only accepts one argument. Use .subVectors( a, b ) instead."),this.subVectors(a,b)):(this.x-=a.x,this.y-=a.y,this)},subVectors:function(a,b){return this.x=a.x-b.x,this.y=a.y-b.y,this},multiplyScalar:function(a){return this.x*=a,this.y*=a,this},divideScalar:function(a){if(0!==a){var b=1/a;this.x*=b,this.y*=b}else this.x=0,this.y=0;return this},min:function(a){return this.x>a.x&&(this.x=a.x),this.y>a.y&&(this.y=a.y),this},max:function(a){return this.xb.x&&(this.x=b.x),this.yb.y&&(this.y=b.y),this},clampScalar:function(){var b,c;return function(d,e){return void 0===b&&(b=new a.Vector2,c=new a.Vector2),b.set(d,d),c.set(e,e),this.clamp(b,c)}}(),floor:function(){return this.x=Math.floor(this.x),this.y=Math.floor(this.y),this},ceil:function(){return this.x=Math.ceil(this.x),this.y=Math.ceil(this.y),this},round:function(){return this.x=Math.round(this.x),this.y=Math.round(this.y),this},roundToZero:function(){return this.x=this.x<0?Math.ceil(this.x):Math.floor(this.x),this.y=this.y<0?Math.ceil(this.y):Math.floor(this.y),this},negate:function(){return this.multiplyScalar(-1)},dot:function(a){return this.x*a.x+this.y*a.y},lengthSq:function(){return this.x*this.x+this.y*this.y},length:function(){return Math.sqrt(this.x*this.x+this.y*this.y)},normalize:function(){return this.divideScalar(this.length())},distanceTo:function(a){return Math.sqrt(this.distanceToSquared(a))},distanceToSquared:function(a){var b=this.x-a.x,c=this.y-a.y;return b*b+c*c},setLength:function(a){var b=this.length();return 0!==b&&a!==b&&this.multiplyScalar(a/b),this},lerp:function(a,b){return this.x+=(a.x-this.x)*b,this.y+=(a.y-this.y)*b,this},equals:function(a){return a.x===this.x&&a.y===this.y},fromArray:function(a){return this.x=a[0],this.y=a[1],this},toArray:function(){return[this.x,this.y]},clone:function(){return new a.Vector2(this.x,this.y)}},a.Vector3=function(a,b,c){this.x=a||0,this.y=b||0,this.z=c||0},a.Vector3.prototype={constructor:a.Vector3,set:function(a,b,c){return this.x=a,this.y=b,this.z=c,this},setX:function(a){return this.x=a,this},setY:function(a){return this.y=a,this},setZ:function(a){return this.z=a,this},setComponent:function(a,b){switch(a){case 0:this.x=b;break;case 1:this.y=b;break;case 2:this.z=b;break;default:throw new Error("index is out of range: "+a)}},getComponent:function(a){switch(a){case 0:return this.x;case 1:return this.y;case 2:return this.z;default:throw new Error("index is out of range: "+a)}},copy:function(a){return this.x=a.x,this.y=a.y,this.z=a.z,this},add:function(a,b){return void 0!==b?(console.warn("DEPRECATED: Vector3's .add() now only accepts one argument. Use .addVectors( a, b ) instead."),this.addVectors(a,b)):(this.x+=a.x,this.y+=a.y,this.z+=a.z,this)},addScalar:function(a){return this.x+=a,this.y+=a,this.z+=a,this},addVectors:function(a,b){return this.x=a.x+b.x,this.y=a.y+b.y,this.z=a.z+b.z,this},sub:function(a,b){return void 0!==b?(console.warn("DEPRECATED: Vector3's .sub() now only accepts one argument. Use .subVectors( a, b ) instead."),this.subVectors(a,b)):(this.x-=a.x,this.y-=a.y,this.z-=a.z,this)},subVectors:function(a,b){return this.x=a.x-b.x,this.y=a.y-b.y,this.z=a.z-b.z,this},multiply:function(a,b){return void 0!==b?(console.warn("DEPRECATED: Vector3's .multiply() now only accepts one argument. Use .multiplyVectors( a, b ) instead."),this.multiplyVectors(a,b)):(this.x*=a.x,this.y*=a.y,this.z*=a.z,this)},multiplyScalar:function(a){return this.x*=a,this.y*=a,this.z*=a,this},multiplyVectors:function(a,b){return this.x=a.x*b.x,this.y=a.y*b.y,this.z=a.z*b.z,this},applyEuler:function(){var b;return function(c){return c instanceof a.Euler==!1&&console.error("ERROR: Vector3's .applyEuler() now expects a Euler rotation rather than a Vector3 and order. Please update your code."),void 0===b&&(b=new a.Quaternion),this.applyQuaternion(b.setFromEuler(c)),this +}}(),applyAxisAngle:function(){var b;return function(c,d){return void 0===b&&(b=new a.Quaternion),this.applyQuaternion(b.setFromAxisAngle(c,d)),this}}(),applyMatrix3:function(a){var b=this.x,c=this.y,d=this.z,e=a.elements;return this.x=e[0]*b+e[3]*c+e[6]*d,this.y=e[1]*b+e[4]*c+e[7]*d,this.z=e[2]*b+e[5]*c+e[8]*d,this},applyMatrix4:function(a){var b=this.x,c=this.y,d=this.z,e=a.elements;return this.x=e[0]*b+e[4]*c+e[8]*d+e[12],this.y=e[1]*b+e[5]*c+e[9]*d+e[13],this.z=e[2]*b+e[6]*c+e[10]*d+e[14],this},applyProjection:function(a){var b=this.x,c=this.y,d=this.z,e=a.elements,f=1/(e[3]*b+e[7]*c+e[11]*d+e[15]);return this.x=(e[0]*b+e[4]*c+e[8]*d+e[12])*f,this.y=(e[1]*b+e[5]*c+e[9]*d+e[13])*f,this.z=(e[2]*b+e[6]*c+e[10]*d+e[14])*f,this},applyQuaternion:function(a){var b=this.x,c=this.y,d=this.z,e=a.x,f=a.y,g=a.z,h=a.w,i=h*b+f*d-g*c,j=h*c+g*b-e*d,k=h*d+e*c-f*b,l=-e*b-f*c-g*d;return this.x=i*h+l*-e+j*-g-k*-f,this.y=j*h+l*-f+k*-e-i*-g,this.z=k*h+l*-g+i*-f-j*-e,this},transformDirection:function(a){var b=this.x,c=this.y,d=this.z,e=a.elements;return this.x=e[0]*b+e[4]*c+e[8]*d,this.y=e[1]*b+e[5]*c+e[9]*d,this.z=e[2]*b+e[6]*c+e[10]*d,this.normalize(),this},divide:function(a){return this.x/=a.x,this.y/=a.y,this.z/=a.z,this},divideScalar:function(a){if(0!==a){var b=1/a;this.x*=b,this.y*=b,this.z*=b}else this.x=0,this.y=0,this.z=0;return this},min:function(a){return this.x>a.x&&(this.x=a.x),this.y>a.y&&(this.y=a.y),this.z>a.z&&(this.z=a.z),this},max:function(a){return this.xb.x&&(this.x=b.x),this.yb.y&&(this.y=b.y),this.zb.z&&(this.z=b.z),this},clampScalar:function(){var b,c;return function(d,e){return void 0===b&&(b=new a.Vector3,c=new a.Vector3),b.set(d,d,d),c.set(e,e,e),this.clamp(b,c)}}(),floor:function(){return this.x=Math.floor(this.x),this.y=Math.floor(this.y),this.z=Math.floor(this.z),this},ceil:function(){return this.x=Math.ceil(this.x),this.y=Math.ceil(this.y),this.z=Math.ceil(this.z),this},round:function(){return this.x=Math.round(this.x),this.y=Math.round(this.y),this.z=Math.round(this.z),this},roundToZero:function(){return this.x=this.x<0?Math.ceil(this.x):Math.floor(this.x),this.y=this.y<0?Math.ceil(this.y):Math.floor(this.y),this.z=this.z<0?Math.ceil(this.z):Math.floor(this.z),this},negate:function(){return this.multiplyScalar(-1)},dot:function(a){return this.x*a.x+this.y*a.y+this.z*a.z},lengthSq:function(){return this.x*this.x+this.y*this.y+this.z*this.z},length:function(){return Math.sqrt(this.x*this.x+this.y*this.y+this.z*this.z)},lengthManhattan:function(){return Math.abs(this.x)+Math.abs(this.y)+Math.abs(this.z)},normalize:function(){return this.divideScalar(this.length())},setLength:function(a){var b=this.length();return 0!==b&&a!==b&&this.multiplyScalar(a/b),this},lerp:function(a,b){return this.x+=(a.x-this.x)*b,this.y+=(a.y-this.y)*b,this.z+=(a.z-this.z)*b,this},cross:function(a,b){if(void 0!==b)return console.warn("DEPRECATED: Vector3's .cross() now only accepts one argument. Use .crossVectors( a, b ) instead."),this.crossVectors(a,b);var c=this.x,d=this.y,e=this.z;return this.x=d*a.z-e*a.y,this.y=e*a.x-c*a.z,this.z=c*a.y-d*a.x,this},crossVectors:function(a,b){var c=a.x,d=a.y,e=a.z,f=b.x,g=b.y,h=b.z;return this.x=d*h-e*g,this.y=e*f-c*h,this.z=c*g-d*f,this},projectOnVector:function(){var b,c;return function(d){return void 0===b&&(b=new a.Vector3),b.copy(d).normalize(),c=this.dot(b),this.copy(b).multiplyScalar(c)}}(),projectOnPlane:function(){var b;return function(c){return void 0===b&&(b=new a.Vector3),b.copy(this).projectOnVector(c),this.sub(b)}}(),reflect:function(){var b;return function(c){return void 0===b&&(b=new a.Vector3),this.sub(b.copy(c).multiplyScalar(2*this.dot(c)))}}(),angleTo:function(b){var c=this.dot(b)/(this.length()*b.length());return Math.acos(a.Math.clamp(c,-1,1))},distanceTo:function(a){return Math.sqrt(this.distanceToSquared(a))},distanceToSquared:function(a){var b=this.x-a.x,c=this.y-a.y,d=this.z-a.z;return b*b+c*c+d*d},setEulerFromRotationMatrix:function(){console.error("REMOVED: Vector3's setEulerFromRotationMatrix has been removed in favor of Euler.setFromRotationMatrix(), please update your code.")},setEulerFromQuaternion:function(){console.error("REMOVED: Vector3's setEulerFromQuaternion: has been removed in favor of Euler.setFromQuaternion(), please update your code.")},getPositionFromMatrix:function(a){return console.warn("DEPRECATED: Vector3's .getPositionFromMatrix() has been renamed to .setFromMatrixPosition(). Please update your code."),this.setFromMatrixPosition(a)},getScaleFromMatrix:function(a){return console.warn("DEPRECATED: Vector3's .getScaleFromMatrix() has been renamed to .setFromMatrixScale(). Please update your code."),this.setFromMatrixScale(a)},getColumnFromMatrix:function(a,b){return console.warn("DEPRECATED: Vector3's .getColumnFromMatrix() has been renamed to .setFromMatrixColumn(). Please update your code."),this.setFromMatrixColumn(a,b)},setFromMatrixPosition:function(a){return this.x=a.elements[12],this.y=a.elements[13],this.z=a.elements[14],this},setFromMatrixScale:function(a){var b=this.set(a.elements[0],a.elements[1],a.elements[2]).length(),c=this.set(a.elements[4],a.elements[5],a.elements[6]).length(),d=this.set(a.elements[8],a.elements[9],a.elements[10]).length();return this.x=b,this.y=c,this.z=d,this},setFromMatrixColumn:function(a,b){var c=4*a,d=b.elements;return this.x=d[c],this.y=d[c+1],this.z=d[c+2],this},equals:function(a){return a.x===this.x&&a.y===this.y&&a.z===this.z},fromArray:function(a){return this.x=a[0],this.y=a[1],this.z=a[2],this},toArray:function(){return[this.x,this.y,this.z]},clone:function(){return new a.Vector3(this.x,this.y,this.z)}},a.Vector4=function(a,b,c,d){this.x=a||0,this.y=b||0,this.z=c||0,this.w=void 0!==d?d:1},a.Vector4.prototype={constructor:a.Vector4,set:function(a,b,c,d){return this.x=a,this.y=b,this.z=c,this.w=d,this},setX:function(a){return this.x=a,this},setY:function(a){return this.y=a,this},setZ:function(a){return this.z=a,this},setW:function(a){return this.w=a,this},setComponent:function(a,b){switch(a){case 0:this.x=b;break;case 1:this.y=b;break;case 2:this.z=b;break;case 3:this.w=b;break;default:throw new Error("index is out of range: "+a)}},getComponent:function(a){switch(a){case 0:return this.x;case 1:return this.y;case 2:return this.z;case 3:return this.w;default:throw new Error("index is out of range: "+a)}},copy:function(a){return this.x=a.x,this.y=a.y,this.z=a.z,this.w=void 0!==a.w?a.w:1,this},add:function(a,b){return void 0!==b?(console.warn("DEPRECATED: Vector4's .add() now only accepts one argument. Use .addVectors( a, b ) instead."),this.addVectors(a,b)):(this.x+=a.x,this.y+=a.y,this.z+=a.z,this.w+=a.w,this)},addScalar:function(a){return this.x+=a,this.y+=a,this.z+=a,this.w+=a,this},addVectors:function(a,b){return this.x=a.x+b.x,this.y=a.y+b.y,this.z=a.z+b.z,this.w=a.w+b.w,this},sub:function(a,b){return void 0!==b?(console.warn("DEPRECATED: Vector4's .sub() now only accepts one argument. Use .subVectors( a, b ) instead."),this.subVectors(a,b)):(this.x-=a.x,this.y-=a.y,this.z-=a.z,this.w-=a.w,this)},subVectors:function(a,b){return this.x=a.x-b.x,this.y=a.y-b.y,this.z=a.z-b.z,this.w=a.w-b.w,this},multiplyScalar:function(a){return this.x*=a,this.y*=a,this.z*=a,this.w*=a,this},applyMatrix4:function(a){var b=this.x,c=this.y,d=this.z,e=this.w,f=a.elements;return this.x=f[0]*b+f[4]*c+f[8]*d+f[12]*e,this.y=f[1]*b+f[5]*c+f[9]*d+f[13]*e,this.z=f[2]*b+f[6]*c+f[10]*d+f[14]*e,this.w=f[3]*b+f[7]*c+f[11]*d+f[15]*e,this},divideScalar:function(a){if(0!==a){var b=1/a;this.x*=b,this.y*=b,this.z*=b,this.w*=b}else this.x=0,this.y=0,this.z=0,this.w=1;return this},setAxisAngleFromQuaternion:function(a){this.w=2*Math.acos(a.w);var b=Math.sqrt(1-a.w*a.w);return 1e-4>b?(this.x=1,this.y=0,this.z=0):(this.x=a.x/b,this.y=a.y/b,this.z=a.z/b),this},setAxisAngleFromRotationMatrix:function(a){var b,c,d,e,f=.01,g=.1,h=a.elements,i=h[0],j=h[4],k=h[8],l=h[1],m=h[5],n=h[9],o=h[2],p=h[6],q=h[10];if(Math.abs(j-l)s&&r>t?f>r?(c=0,d=.707106781,e=.707106781):(c=Math.sqrt(r),d=u/c,e=v/c):s>t?f>s?(c=.707106781,d=0,e=.707106781):(d=Math.sqrt(s),c=u/d,e=w/d):f>t?(c=.707106781,d=.707106781,e=0):(e=Math.sqrt(t),c=v/e,d=w/e),this.set(c,d,e,b),this}var x=Math.sqrt((p-n)*(p-n)+(k-o)*(k-o)+(l-j)*(l-j));return Math.abs(x)<.001&&(x=1),this.x=(p-n)/x,this.y=(k-o)/x,this.z=(l-j)/x,this.w=Math.acos((i+m+q-1)/2),this},min:function(a){return this.x>a.x&&(this.x=a.x),this.y>a.y&&(this.y=a.y),this.z>a.z&&(this.z=a.z),this.w>a.w&&(this.w=a.w),this},max:function(a){return this.xb.x&&(this.x=b.x),this.yb.y&&(this.y=b.y),this.zb.z&&(this.z=b.z),this.wb.w&&(this.w=b.w),this},clampScalar:function(){var b,c;return function(d,e){return void 0===b&&(b=new a.Vector4,c=new a.Vector4),b.set(d,d,d,d),c.set(e,e,e,e),this.clamp(b,c)}}(),floor:function(){return this.x=Math.floor(this.x),this.y=Math.floor(this.y),this.z=Math.floor(this.z),this.w=Math.floor(this.w),this},ceil:function(){return this.x=Math.ceil(this.x),this.y=Math.ceil(this.y),this.z=Math.ceil(this.z),this.w=Math.ceil(this.w),this},round:function(){return this.x=Math.round(this.x),this.y=Math.round(this.y),this.z=Math.round(this.z),this.w=Math.round(this.w),this},roundToZero:function(){return this.x=this.x<0?Math.ceil(this.x):Math.floor(this.x),this.y=this.y<0?Math.ceil(this.y):Math.floor(this.y),this.z=this.z<0?Math.ceil(this.z):Math.floor(this.z),this.w=this.w<0?Math.ceil(this.w):Math.floor(this.w),this},negate:function(){return this.multiplyScalar(-1)},dot:function(a){return this.x*a.x+this.y*a.y+this.z*a.z+this.w*a.w},lengthSq:function(){return this.x*this.x+this.y*this.y+this.z*this.z+this.w*this.w},length:function(){return Math.sqrt(this.x*this.x+this.y*this.y+this.z*this.z+this.w*this.w)},lengthManhattan:function(){return Math.abs(this.x)+Math.abs(this.y)+Math.abs(this.z)+Math.abs(this.w)},normalize:function(){return this.divideScalar(this.length())},setLength:function(a){var b=this.length();return 0!==b&&a!==b&&this.multiplyScalar(a/b),this},lerp:function(a,b){return this.x+=(a.x-this.x)*b,this.y+=(a.y-this.y)*b,this.z+=(a.z-this.z)*b,this.w+=(a.w-this.w)*b,this},equals:function(a){return a.x===this.x&&a.y===this.y&&a.z===this.z&&a.w===this.w},fromArray:function(a){return this.x=a[0],this.y=a[1],this.z=a[2],this.w=a[3],this},toArray:function(){return[this.x,this.y,this.z,this.w]},clone:function(){return new a.Vector4(this.x,this.y,this.z,this.w)}},a.Euler=function(b,c,d,e){this._x=b||0,this._y=c||0,this._z=d||0,this._order=e||a.Euler.DefaultOrder},a.Euler.RotationOrders=["XYZ","YZX","ZXY","XZY","YXZ","ZYX"],a.Euler.DefaultOrder="XYZ",a.Euler.prototype={constructor:a.Euler,_x:0,_y:0,_z:0,_order:a.Euler.DefaultOrder,_quaternion:void 0,_updateQuaternion:function(){void 0!==this._quaternion&&this._quaternion.setFromEuler(this,!1)},get x(){return this._x},set x(a){this._x=a,this._updateQuaternion()},get y(){return this._y},set y(a){this._y=a,this._updateQuaternion()},get z(){return this._z},set z(a){this._z=a,this._updateQuaternion()},get order(){return this._order},set order(a){this._order=a,this._updateQuaternion()},set:function(a,b,c,d){return this._x=a,this._y=b,this._z=c,this._order=d||this._order,this._updateQuaternion(),this},copy:function(a){return this._x=a._x,this._y=a._y,this._z=a._z,this._order=a._order,this._updateQuaternion(),this},setFromRotationMatrix:function(a,b){function c(a){return Math.min(Math.max(a,-1),1)}var d=a.elements,e=d[0],f=d[4],g=d[8],h=d[1],i=d[5],j=d[9],k=d[2],l=d[6],m=d[10];return b=b||this._order,"XYZ"===b?(this._y=Math.asin(c(g)),Math.abs(g)<.99999?(this._x=Math.atan2(-j,m),this._z=Math.atan2(-f,e)):(this._x=Math.atan2(l,i),this._z=0)):"YXZ"===b?(this._x=Math.asin(-c(j)),Math.abs(j)<.99999?(this._y=Math.atan2(g,m),this._z=Math.atan2(h,i)):(this._y=Math.atan2(-k,e),this._z=0)):"ZXY"===b?(this._x=Math.asin(c(l)),Math.abs(l)<.99999?(this._y=Math.atan2(-k,m),this._z=Math.atan2(-f,i)):(this._y=0,this._z=Math.atan2(h,e))):"ZYX"===b?(this._y=Math.asin(-c(k)),Math.abs(k)<.99999?(this._x=Math.atan2(l,m),this._z=Math.atan2(h,e)):(this._x=0,this._z=Math.atan2(-f,i))):"YZX"===b?(this._z=Math.asin(c(h)),Math.abs(h)<.99999?(this._x=Math.atan2(-j,i),this._y=Math.atan2(-k,e)):(this._x=0,this._y=Math.atan2(g,m))):"XZY"===b?(this._z=Math.asin(-c(f)),Math.abs(f)<.99999?(this._x=Math.atan2(l,i),this._y=Math.atan2(g,e)):(this._x=Math.atan2(-j,m),this._y=0)):console.warn("WARNING: Euler.setFromRotationMatrix() given unsupported order: "+b),this._order=b,this._updateQuaternion(),this},setFromQuaternion:function(a,b,c){function d(a){return Math.min(Math.max(a,-1),1)}var e=a.x*a.x,f=a.y*a.y,g=a.z*a.z,h=a.w*a.w;return b=b||this._order,"XYZ"===b?(this._x=Math.atan2(2*(a.x*a.w-a.y*a.z),h-e-f+g),this._y=Math.asin(d(2*(a.x*a.z+a.y*a.w))),this._z=Math.atan2(2*(a.z*a.w-a.x*a.y),h+e-f-g)):"YXZ"===b?(this._x=Math.asin(d(2*(a.x*a.w-a.y*a.z))),this._y=Math.atan2(2*(a.x*a.z+a.y*a.w),h-e-f+g),this._z=Math.atan2(2*(a.x*a.y+a.z*a.w),h-e+f-g)):"ZXY"===b?(this._x=Math.asin(d(2*(a.x*a.w+a.y*a.z))),this._y=Math.atan2(2*(a.y*a.w-a.z*a.x),h-e-f+g),this._z=Math.atan2(2*(a.z*a.w-a.x*a.y),h-e+f-g)):"ZYX"===b?(this._x=Math.atan2(2*(a.x*a.w+a.z*a.y),h-e-f+g),this._y=Math.asin(d(2*(a.y*a.w-a.x*a.z))),this._z=Math.atan2(2*(a.x*a.y+a.z*a.w),h+e-f-g)):"YZX"===b?(this._x=Math.atan2(2*(a.x*a.w-a.z*a.y),h-e+f-g),this._y=Math.atan2(2*(a.y*a.w-a.x*a.z),h+e-f-g),this._z=Math.asin(d(2*(a.x*a.y+a.z*a.w)))):"XZY"===b?(this._x=Math.atan2(2*(a.x*a.w+a.y*a.z),h-e+f-g),this._y=Math.atan2(2*(a.x*a.z+a.y*a.w),h+e-f-g),this._z=Math.asin(d(2*(a.z*a.w-a.x*a.y)))):console.warn("WARNING: Euler.setFromQuaternion() given unsupported order: "+b),this._order=b,c!==!1&&this._updateQuaternion(),this},reorder:function(){var b=new a.Quaternion;return function(a){b.setFromEuler(this),this.setFromQuaternion(b,a)}}(),fromArray:function(a){return this._x=a[0],this._y=a[1],this._z=a[2],void 0!==a[3]&&(this._order=a[3]),this._updateQuaternion(),this},toArray:function(){return[this._x,this._y,this._z,this._order]},equals:function(a){return a._x===this._x&&a._y===this._y&&a._z===this._z&&a._order===this._order},clone:function(){return new a.Euler(this._x,this._y,this._z,this._order)}},a.Line3=function(b,c){this.start=void 0!==b?b:new a.Vector3,this.end=void 0!==c?c:new a.Vector3},a.Line3.prototype={constructor:a.Line3,set:function(a,b){return this.start.copy(a),this.end.copy(b),this},copy:function(a){return this.start.copy(a.start),this.end.copy(a.end),this},center:function(b){var c=b||new a.Vector3;return c.addVectors(this.start,this.end).multiplyScalar(.5)},delta:function(b){var c=b||new a.Vector3;return c.subVectors(this.end,this.start)},distanceSq:function(){return this.start.distanceToSquared(this.end)},distance:function(){return this.start.distanceTo(this.end)},at:function(b,c){var d=c||new a.Vector3;return this.delta(d).multiplyScalar(b).add(this.start)},closestPointToPointParameter:function(){var b=new a.Vector3,c=new a.Vector3;return function(d,e){b.subVectors(d,this.start),c.subVectors(this.end,this.start);var f=c.dot(c),g=c.dot(b),h=g/f;return e&&(h=a.Math.clamp(h,0,1)),h}}(),closestPointToPoint:function(b,c,d){var e=this.closestPointToPointParameter(b,c),f=d||new a.Vector3;return this.delta(f).multiplyScalar(e).add(this.start)},applyMatrix4:function(a){return this.start.applyMatrix4(a),this.end.applyMatrix4(a),this},equals:function(a){return a.start.equals(this.start)&&a.end.equals(this.end)},clone:function(){return(new a.Line3).copy(this)}},a.Box2=function(b,c){this.min=void 0!==b?b:new a.Vector2(1/0,1/0),this.max=void 0!==c?c:new a.Vector2(-1/0,-1/0)},a.Box2.prototype={constructor:a.Box2,set:function(a,b){return this.min.copy(a),this.max.copy(b),this},setFromPoints:function(a){if(a.length>0){var b=a[0];this.min.copy(b),this.max.copy(b);for(var c=1,d=a.length;d>c;c++)b=a[c],b.xthis.max.x&&(this.max.x=b.x),b.ythis.max.y&&(this.max.y=b.y)}else this.makeEmpty();return this},setFromCenterAndSize:function(){var b=new a.Vector2;return function(a,c){var d=b.copy(c).multiplyScalar(.5);return this.min.copy(a).sub(d),this.max.copy(a).add(d),this}}(),copy:function(a){return this.min.copy(a.min),this.max.copy(a.max),this},makeEmpty:function(){return this.min.x=this.min.y=1/0,this.max.x=this.max.y=-1/0,this},empty:function(){return this.max.xthis.max.x||a.ythis.max.y?!1:!0},containsBox:function(a){return this.min.x<=a.min.x&&a.max.x<=this.max.x&&this.min.y<=a.min.y&&a.max.y<=this.max.y?!0:!1},getParameter:function(b,c){var d=c||new a.Vector2;return d.set((b.x-this.min.x)/(this.max.x-this.min.x),(b.y-this.min.y)/(this.max.y-this.min.y))},isIntersectionBox:function(a){return a.max.xthis.max.x||a.max.ythis.max.y?!1:!0},clampPoint:function(b,c){var d=c||new a.Vector2;return d.copy(b).clamp(this.min,this.max)},distanceToPoint:function(){var b=new a.Vector2;return function(a){var c=b.copy(a).clamp(this.min,this.max);return c.sub(a).length()}}(),intersect:function(a){return this.min.max(a.min),this.max.min(a.max),this},union:function(a){return this.min.min(a.min),this.max.max(a.max),this},translate:function(a){return this.min.add(a),this.max.add(a),this},equals:function(a){return a.min.equals(this.min)&&a.max.equals(this.max)},clone:function(){return(new a.Box2).copy(this)}},a.Box3=function(b,c){this.min=void 0!==b?b:new a.Vector3(1/0,1/0,1/0),this.max=void 0!==c?c:new a.Vector3(-1/0,-1/0,-1/0)},a.Box3.prototype={constructor:a.Box3,set:function(a,b){return this.min.copy(a),this.max.copy(b),this},addPoint:function(a){a.xthis.max.x&&(this.max.x=a.x),a.ythis.max.y&&(this.max.y=a.y),a.zthis.max.z&&(this.max.z=a.z)},setFromPoints:function(a){if(a.length>0){var b=a[0];this.min.copy(b),this.max.copy(b);for(var c=1,d=a.length;d>c;c++)this.addPoint(a[c])}else this.makeEmpty();return this},setFromCenterAndSize:function(){var b=new a.Vector3;return function(a,c){var d=b.copy(c).multiplyScalar(.5);return this.min.copy(a).sub(d),this.max.copy(a).add(d),this}}(),setFromObject:function(){var b=new a.Vector3;return function(a){var c=this;return a.updateMatrixWorld(!0),this.makeEmpty(),a.traverse(function(a){if(void 0!==a.geometry&&void 0!==a.geometry.vertices)for(var d=a.geometry.vertices,e=0,f=d.length;f>e;e++)b.copy(d[e]),b.applyMatrix4(a.matrixWorld),c.expandByPoint(b)}),this}}(),copy:function(a){return this.min.copy(a.min),this.max.copy(a.max),this},makeEmpty:function(){return this.min.x=this.min.y=this.min.z=1/0,this.max.x=this.max.y=this.max.z=-1/0,this},empty:function(){return this.max.xthis.max.x||a.ythis.max.y||a.zthis.max.z?!1:!0},containsBox:function(a){return this.min.x<=a.min.x&&a.max.x<=this.max.x&&this.min.y<=a.min.y&&a.max.y<=this.max.y&&this.min.z<=a.min.z&&a.max.z<=this.max.z?!0:!1},getParameter:function(b,c){var d=c||new a.Vector3;return d.set((b.x-this.min.x)/(this.max.x-this.min.x),(b.y-this.min.y)/(this.max.y-this.min.y),(b.z-this.min.z)/(this.max.z-this.min.z))},isIntersectionBox:function(a){return a.max.xthis.max.x||a.max.ythis.max.y||a.max.zthis.max.z?!1:!0},clampPoint:function(b,c){var d=c||new a.Vector3;return d.copy(b).clamp(this.min,this.max)},distanceToPoint:function(){var b=new a.Vector3;return function(a){var c=b.copy(a).clamp(this.min,this.max);return c.sub(a).length()}}(),getBoundingSphere:function(){var b=new a.Vector3;return function(c){var d=c||new a.Sphere;return d.center=this.center(),d.radius=.5*this.size(b).length(),d}}(),intersect:function(a){return this.min.max(a.min),this.max.min(a.max),this},union:function(a){return this.min.min(a.min),this.max.max(a.max),this},applyMatrix4:function(){var b=[new a.Vector3,new a.Vector3,new a.Vector3,new a.Vector3,new a.Vector3,new a.Vector3,new a.Vector3,new a.Vector3];return function(a){return b[0].set(this.min.x,this.min.y,this.min.z).applyMatrix4(a),b[1].set(this.min.x,this.min.y,this.max.z).applyMatrix4(a),b[2].set(this.min.x,this.max.y,this.min.z).applyMatrix4(a),b[3].set(this.min.x,this.max.y,this.max.z).applyMatrix4(a),b[4].set(this.max.x,this.min.y,this.min.z).applyMatrix4(a),b[5].set(this.max.x,this.min.y,this.max.z).applyMatrix4(a),b[6].set(this.max.x,this.max.y,this.min.z).applyMatrix4(a),b[7].set(this.max.x,this.max.y,this.max.z).applyMatrix4(a),this.makeEmpty(),this.setFromPoints(b),this}}(),translate:function(a){return this.min.add(a),this.max.add(a),this},equals:function(a){return a.min.equals(this.min)&&a.max.equals(this.max)},clone:function(){return(new a.Box3).copy(this)}},a.Matrix3=function(a,b,c,d,e,f,g,h,i){this.elements=new Float32Array(9),this.set(void 0!==a?a:1,b||0,c||0,d||0,void 0!==e?e:1,f||0,g||0,h||0,void 0!==i?i:1)},a.Matrix3.prototype={constructor:a.Matrix3,set:function(a,b,c,d,e,f,g,h,i){var j=this.elements;return j[0]=a,j[3]=b,j[6]=c,j[1]=d,j[4]=e,j[7]=f,j[2]=g,j[5]=h,j[8]=i,this},identity:function(){return this.set(1,0,0,0,1,0,0,0,1),this},copy:function(a){var b=a.elements;return this.set(b[0],b[3],b[6],b[1],b[4],b[7],b[2],b[5],b[8]),this},multiplyVector3:function(a){return console.warn("DEPRECATED: Matrix3's .multiplyVector3() has been removed. Use vector.applyMatrix3( matrix ) instead."),a.applyMatrix3(this)},multiplyVector3Array:function(){var b=new a.Vector3;return function(a){for(var c=0,d=a.length;d>c;c+=3)b.x=a[c],b.y=a[c+1],b.z=a[c+2],b.applyMatrix3(this),a[c]=b.x,a[c+1]=b.y,a[c+2]=b.z;return a}}(),multiplyScalar:function(a){var b=this.elements;return b[0]*=a,b[3]*=a,b[6]*=a,b[1]*=a,b[4]*=a,b[7]*=a,b[2]*=a,b[5]*=a,b[8]*=a,this},determinant:function(){var a=this.elements,b=a[0],c=a[1],d=a[2],e=a[3],f=a[4],g=a[5],h=a[6],i=a[7],j=a[8];return b*f*j-b*g*i-c*e*j+c*g*h+d*e*i-d*f*h},getInverse:function(a,b){var c=a.elements,d=this.elements;d[0]=c[10]*c[5]-c[6]*c[9],d[1]=-c[10]*c[1]+c[2]*c[9],d[2]=c[6]*c[1]-c[2]*c[5],d[3]=-c[10]*c[4]+c[6]*c[8],d[4]=c[10]*c[0]-c[2]*c[8],d[5]=-c[6]*c[0]+c[2]*c[4],d[6]=c[9]*c[4]-c[5]*c[8],d[7]=-c[9]*c[0]+c[1]*c[8],d[8]=c[5]*c[0]-c[1]*c[4];var e=c[0]*d[0]+c[1]*d[3]+c[2]*d[6];if(0===e){var f="Matrix3.getInverse(): can't invert matrix, determinant is 0";if(b)throw new Error(f);return console.warn(f),this.identity(),this}return this.multiplyScalar(1/e),this},transpose:function(){var a,b=this.elements;return a=b[1],b[1]=b[3],b[3]=a,a=b[2],b[2]=b[6],b[6]=a,a=b[5],b[5]=b[7],b[7]=a,this},getNormalMatrix:function(a){return this.getInverse(a).transpose(),this},transposeIntoArray:function(a){var b=this.elements;return a[0]=b[0],a[1]=b[3],a[2]=b[6],a[3]=b[1],a[4]=b[4],a[5]=b[7],a[6]=b[2],a[7]=b[5],a[8]=b[8],this},fromArray:function(a){return this.elements.set(a),this},toArray:function(){var a=this.elements;return[a[0],a[1],a[2],a[3],a[4],a[5],a[6],a[7],a[8]]},clone:function(){var b=this.elements;return new a.Matrix3(b[0],b[3],b[6],b[1],b[4],b[7],b[2],b[5],b[8])}},a.Matrix4=function(a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p){this.elements=new Float32Array(16);var q=this.elements;q[0]=void 0!==a?a:1,q[4]=b||0,q[8]=c||0,q[12]=d||0,q[1]=e||0,q[5]=void 0!==f?f:1,q[9]=g||0,q[13]=h||0,q[2]=i||0,q[6]=j||0,q[10]=void 0!==k?k:1,q[14]=l||0,q[3]=m||0,q[7]=n||0,q[11]=o||0,q[15]=void 0!==p?p:1},a.Matrix4.prototype={constructor:a.Matrix4,set:function(a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p){var q=this.elements;return q[0]=a,q[4]=b,q[8]=c,q[12]=d,q[1]=e,q[5]=f,q[9]=g,q[13]=h,q[2]=i,q[6]=j,q[10]=k,q[14]=l,q[3]=m,q[7]=n,q[11]=o,q[15]=p,this},identity:function(){return this.set(1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1),this},copy:function(a){return this.elements.set(a.elements),this},extractPosition:function(a){return console.warn("DEPRECATED: Matrix4's .extractPosition() has been renamed to .copyPosition()."),this.copyPosition(a)},copyPosition:function(a){var b=this.elements,c=a.elements;return b[12]=c[12],b[13]=c[13],b[14]=c[14],this},extractRotation:function(){var b=new a.Vector3;return function(a){var c=this.elements,d=a.elements,e=1/b.set(d[0],d[1],d[2]).length(),f=1/b.set(d[4],d[5],d[6]).length(),g=1/b.set(d[8],d[9],d[10]).length();return c[0]=d[0]*e,c[1]=d[1]*e,c[2]=d[2]*e,c[4]=d[4]*f,c[5]=d[5]*f,c[6]=d[6]*f,c[8]=d[8]*g,c[9]=d[9]*g,c[10]=d[10]*g,this}}(),makeRotationFromEuler:function(b){b instanceof a.Euler==!1&&console.error("ERROR: Matrix's .makeRotationFromEuler() now expects a Euler rotation rather than a Vector3 and order. Please update your code.");var c=this.elements,d=b.x,e=b.y,f=b.z,g=Math.cos(d),h=Math.sin(d),i=Math.cos(e),j=Math.sin(e),k=Math.cos(f),l=Math.sin(f);if("XYZ"===b.order){var m=g*k,n=g*l,o=h*k,p=h*l;c[0]=i*k,c[4]=-i*l,c[8]=j,c[1]=n+o*j,c[5]=m-p*j,c[9]=-h*i,c[2]=p-m*j,c[6]=o+n*j,c[10]=g*i}else if("YXZ"===b.order){var q=i*k,r=i*l,s=j*k,t=j*l;c[0]=q+t*h,c[4]=s*h-r,c[8]=g*j,c[1]=g*l,c[5]=g*k,c[9]=-h,c[2]=r*h-s,c[6]=t+q*h,c[10]=g*i}else if("ZXY"===b.order){var q=i*k,r=i*l,s=j*k,t=j*l;c[0]=q-t*h,c[4]=-g*l,c[8]=s+r*h,c[1]=r+s*h,c[5]=g*k,c[9]=t-q*h,c[2]=-g*j,c[6]=h,c[10]=g*i}else if("ZYX"===b.order){var m=g*k,n=g*l,o=h*k,p=h*l;c[0]=i*k,c[4]=o*j-n,c[8]=m*j+p,c[1]=i*l,c[5]=p*j+m,c[9]=n*j-o,c[2]=-j,c[6]=h*i,c[10]=g*i}else if("YZX"===b.order){var u=g*i,v=g*j,w=h*i,x=h*j;c[0]=i*k,c[4]=x-u*l,c[8]=w*l+v,c[1]=l,c[5]=g*k,c[9]=-h*k,c[2]=-j*k,c[6]=v*l+w,c[10]=u-x*l}else if("XZY"===b.order){var u=g*i,v=g*j,w=h*i,x=h*j;c[0]=i*k,c[4]=-l,c[8]=j*k,c[1]=u*l+x,c[5]=g*k,c[9]=v*l-w,c[2]=w*l-v,c[6]=h*k,c[10]=x*l+u}return c[3]=0,c[7]=0,c[11]=0,c[12]=0,c[13]=0,c[14]=0,c[15]=1,this},setRotationFromQuaternion:function(a){return console.warn("DEPRECATED: Matrix4's .setRotationFromQuaternion() has been deprecated in favor of makeRotationFromQuaternion. Please update your code."),this.makeRotationFromQuaternion(a)},makeRotationFromQuaternion:function(a){var b=this.elements,c=a.x,d=a.y,e=a.z,f=a.w,g=c+c,h=d+d,i=e+e,j=c*g,k=c*h,l=c*i,m=d*h,n=d*i,o=e*i,p=f*g,q=f*h,r=f*i;return b[0]=1-(m+o),b[4]=k-r,b[8]=l+q,b[1]=k+r,b[5]=1-(j+o),b[9]=n-p,b[2]=l-q,b[6]=n+p,b[10]=1-(j+m),b[3]=0,b[7]=0,b[11]=0,b[12]=0,b[13]=0,b[14]=0,b[15]=1,this},lookAt:function(){var b=new a.Vector3,c=new a.Vector3,d=new a.Vector3;return function(a,e,f){var g=this.elements;return d.subVectors(a,e).normalize(),0===d.length()&&(d.z=1),b.crossVectors(f,d).normalize(),0===b.length()&&(d.x+=1e-4,b.crossVectors(f,d).normalize()),c.crossVectors(d,b),g[0]=b.x,g[4]=c.x,g[8]=d.x,g[1]=b.y,g[5]=c.y,g[9]=d.y,g[2]=b.z,g[6]=c.z,g[10]=d.z,this}}(),multiply:function(a,b){return void 0!==b?(console.warn("DEPRECATED: Matrix4's .multiply() now only accepts one argument. Use .multiplyMatrices( a, b ) instead."),this.multiplyMatrices(a,b)):this.multiplyMatrices(this,a)},multiplyMatrices:function(a,b){var c=a.elements,d=b.elements,e=this.elements,f=c[0],g=c[4],h=c[8],i=c[12],j=c[1],k=c[5],l=c[9],m=c[13],n=c[2],o=c[6],p=c[10],q=c[14],r=c[3],s=c[7],t=c[11],u=c[15],v=d[0],w=d[4],x=d[8],y=d[12],z=d[1],A=d[5],B=d[9],C=d[13],D=d[2],E=d[6],F=d[10],G=d[14],H=d[3],I=d[7],J=d[11],K=d[15];return e[0]=f*v+g*z+h*D+i*H,e[4]=f*w+g*A+h*E+i*I,e[8]=f*x+g*B+h*F+i*J,e[12]=f*y+g*C+h*G+i*K,e[1]=j*v+k*z+l*D+m*H,e[5]=j*w+k*A+l*E+m*I,e[9]=j*x+k*B+l*F+m*J,e[13]=j*y+k*C+l*G+m*K,e[2]=n*v+o*z+p*D+q*H,e[6]=n*w+o*A+p*E+q*I,e[10]=n*x+o*B+p*F+q*J,e[14]=n*y+o*C+p*G+q*K,e[3]=r*v+s*z+t*D+u*H,e[7]=r*w+s*A+t*E+u*I,e[11]=r*x+s*B+t*F+u*J,e[15]=r*y+s*C+t*G+u*K,this},multiplyToArray:function(a,b,c){var d=this.elements;return this.multiplyMatrices(a,b),c[0]=d[0],c[1]=d[1],c[2]=d[2],c[3]=d[3],c[4]=d[4],c[5]=d[5],c[6]=d[6],c[7]=d[7],c[8]=d[8],c[9]=d[9],c[10]=d[10],c[11]=d[11],c[12]=d[12],c[13]=d[13],c[14]=d[14],c[15]=d[15],this},multiplyScalar:function(a){var b=this.elements;return b[0]*=a,b[4]*=a,b[8]*=a,b[12]*=a,b[1]*=a,b[5]*=a,b[9]*=a,b[13]*=a,b[2]*=a,b[6]*=a,b[10]*=a,b[14]*=a,b[3]*=a,b[7]*=a,b[11]*=a,b[15]*=a,this},multiplyVector3:function(a){return console.warn("DEPRECATED: Matrix4's .multiplyVector3() has been removed. Use vector.applyMatrix4( matrix ) or vector.applyProjection( matrix ) instead."),a.applyProjection(this)},multiplyVector4:function(a){return console.warn("DEPRECATED: Matrix4's .multiplyVector4() has been removed. Use vector.applyMatrix4( matrix ) instead."),a.applyMatrix4(this)},multiplyVector3Array:function(){var b=new a.Vector3;return function(a){for(var c=0,d=a.length;d>c;c+=3)b.x=a[c],b.y=a[c+1],b.z=a[c+2],b.applyProjection(this),a[c]=b.x,a[c+1]=b.y,a[c+2]=b.z;return a}}(),rotateAxis:function(a){console.warn("DEPRECATED: Matrix4's .rotateAxis() has been removed. Use Vector3.transformDirection( matrix ) instead."),a.transformDirection(this)},crossVector:function(a){return console.warn("DEPRECATED: Matrix4's .crossVector() has been removed. Use vector.applyMatrix4( matrix ) instead."),a.applyMatrix4(this)},determinant:function(){var a=this.elements,b=a[0],c=a[4],d=a[8],e=a[12],f=a[1],g=a[5],h=a[9],i=a[13],j=a[2],k=a[6],l=a[10],m=a[14],n=a[3],o=a[7],p=a[11],q=a[15];return n*(+e*h*k-d*i*k-e*g*l+c*i*l+d*g*m-c*h*m)+o*(+b*h*m-b*i*l+e*f*l-d*f*m+d*i*j-e*h*j)+p*(+b*i*k-b*g*m-e*f*k+c*f*m+e*g*j-c*i*j)+q*(-d*g*j-b*h*k+b*g*l+d*f*k-c*f*l+c*h*j)},transpose:function(){var a,b=this.elements;return a=b[1],b[1]=b[4],b[4]=a,a=b[2],b[2]=b[8],b[8]=a,a=b[6],b[6]=b[9],b[9]=a,a=b[3],b[3]=b[12],b[12]=a,a=b[7],b[7]=b[13],b[13]=a,a=b[11],b[11]=b[14],b[14]=a,this},flattenToArray:function(a){var b=this.elements;return a[0]=b[0],a[1]=b[1],a[2]=b[2],a[3]=b[3],a[4]=b[4],a[5]=b[5],a[6]=b[6],a[7]=b[7],a[8]=b[8],a[9]=b[9],a[10]=b[10],a[11]=b[11],a[12]=b[12],a[13]=b[13],a[14]=b[14],a[15]=b[15],a},flattenToArrayOffset:function(a,b){var c=this.elements;return a[b]=c[0],a[b+1]=c[1],a[b+2]=c[2],a[b+3]=c[3],a[b+4]=c[4],a[b+5]=c[5],a[b+6]=c[6],a[b+7]=c[7],a[b+8]=c[8],a[b+9]=c[9],a[b+10]=c[10],a[b+11]=c[11],a[b+12]=c[12],a[b+13]=c[13],a[b+14]=c[14],a[b+15]=c[15],a},getPosition:function(){var b=new a.Vector3;return function(){console.warn("DEPRECATED: Matrix4's .getPosition() has been removed. Use Vector3.setFromMatrixPosition( matrix ) instead.");var a=this.elements;return b.set(a[12],a[13],a[14])}}(),setPosition:function(a){var b=this.elements;return b[12]=a.x,b[13]=a.y,b[14]=a.z,this},getInverse:function(a,b){var c=this.elements,d=a.elements,e=d[0],f=d[4],g=d[8],h=d[12],i=d[1],j=d[5],k=d[9],l=d[13],m=d[2],n=d[6],o=d[10],p=d[14],q=d[3],r=d[7],s=d[11],t=d[15];c[0]=k*p*r-l*o*r+l*n*s-j*p*s-k*n*t+j*o*t,c[4]=h*o*r-g*p*r-h*n*s+f*p*s+g*n*t-f*o*t,c[8]=g*l*r-h*k*r+h*j*s-f*l*s-g*j*t+f*k*t,c[12]=h*k*n-g*l*n-h*j*o+f*l*o+g*j*p-f*k*p,c[1]=l*o*q-k*p*q-l*m*s+i*p*s+k*m*t-i*o*t,c[5]=g*p*q-h*o*q+h*m*s-e*p*s-g*m*t+e*o*t,c[9]=h*k*q-g*l*q-h*i*s+e*l*s+g*i*t-e*k*t,c[13]=g*l*m-h*k*m+h*i*o-e*l*o-g*i*p+e*k*p,c[2]=j*p*q-l*n*q+l*m*r-i*p*r-j*m*t+i*n*t,c[6]=h*n*q-f*p*q-h*m*r+e*p*r+f*m*t-e*n*t,c[10]=f*l*q-h*j*q+h*i*r-e*l*r-f*i*t+e*j*t,c[14]=h*j*m-f*l*m-h*i*n+e*l*n+f*i*p-e*j*p,c[3]=k*n*q-j*o*q-k*m*r+i*o*r+j*m*s-i*n*s,c[7]=f*o*q-g*n*q+g*m*r-e*o*r-f*m*s+e*n*s,c[11]=g*j*q-f*k*q-g*i*r+e*k*r+f*i*s-e*j*s,c[15]=f*k*m-g*j*m+g*i*n-e*k*n-f*i*o+e*j*o; +var u=e*c[0]+i*c[4]+m*c[8]+q*c[12];if(0==u){var v="Matrix4.getInverse(): can't invert matrix, determinant is 0";if(b)throw new Error(v);return console.warn(v),this.identity(),this}return this.multiplyScalar(1/u),this},translate:function(){console.warn("DEPRECATED: Matrix4's .translate() has been removed.")},rotateX:function(){console.warn("DEPRECATED: Matrix4's .rotateX() has been removed.")},rotateY:function(){console.warn("DEPRECATED: Matrix4's .rotateY() has been removed.")},rotateZ:function(){console.warn("DEPRECATED: Matrix4's .rotateZ() has been removed.")},rotateByAxis:function(){console.warn("DEPRECATED: Matrix4's .rotateByAxis() has been removed.")},scale:function(a){var b=this.elements,c=a.x,d=a.y,e=a.z;return b[0]*=c,b[4]*=d,b[8]*=e,b[1]*=c,b[5]*=d,b[9]*=e,b[2]*=c,b[6]*=d,b[10]*=e,b[3]*=c,b[7]*=d,b[11]*=e,this},getMaxScaleOnAxis:function(){var a=this.elements,b=a[0]*a[0]+a[1]*a[1]+a[2]*a[2],c=a[4]*a[4]+a[5]*a[5]+a[6]*a[6],d=a[8]*a[8]+a[9]*a[9]+a[10]*a[10];return Math.sqrt(Math.max(b,Math.max(c,d)))},makeTranslation:function(a,b,c){return this.set(1,0,0,a,0,1,0,b,0,0,1,c,0,0,0,1),this},makeRotationX:function(a){var b=Math.cos(a),c=Math.sin(a);return this.set(1,0,0,0,0,b,-c,0,0,c,b,0,0,0,0,1),this},makeRotationY:function(a){var b=Math.cos(a),c=Math.sin(a);return this.set(b,0,c,0,0,1,0,0,-c,0,b,0,0,0,0,1),this},makeRotationZ:function(a){var b=Math.cos(a),c=Math.sin(a);return this.set(b,-c,0,0,c,b,0,0,0,0,1,0,0,0,0,1),this},makeRotationAxis:function(a,b){var c=Math.cos(b),d=Math.sin(b),e=1-c,f=a.x,g=a.y,h=a.z,i=e*f,j=e*g;return this.set(i*f+c,i*g-d*h,i*h+d*g,0,i*g+d*h,j*g+c,j*h-d*f,0,i*h-d*g,j*h+d*f,e*h*h+c,0,0,0,0,1),this},makeScale:function(a,b,c){return this.set(a,0,0,0,0,b,0,0,0,0,c,0,0,0,0,1),this},compose:function(a,b,c){return this.makeRotationFromQuaternion(b),this.scale(c),this.setPosition(a),this},decompose:function(){var b=new a.Vector3,c=new a.Matrix4;return function(a,d,e){var f=this.elements,g=b.set(f[0],f[1],f[2]).length(),h=b.set(f[4],f[5],f[6]).length(),i=b.set(f[8],f[9],f[10]).length(),j=this.determinant();0>j&&(g=-g),a.x=f[12],a.y=f[13],a.z=f[14],c.elements.set(this.elements);var k=1/g,l=1/h,m=1/i;return c.elements[0]*=k,c.elements[1]*=k,c.elements[2]*=k,c.elements[4]*=l,c.elements[5]*=l,c.elements[6]*=l,c.elements[8]*=m,c.elements[9]*=m,c.elements[10]*=m,d.setFromRotationMatrix(c),e.x=g,e.y=h,e.z=i,this}}(),makeFrustum:function(a,b,c,d,e,f){var g=this.elements,h=2*e/(b-a),i=2*e/(d-c),j=(b+a)/(b-a),k=(d+c)/(d-c),l=-(f+e)/(f-e),m=-2*f*e/(f-e);return g[0]=h,g[4]=0,g[8]=j,g[12]=0,g[1]=0,g[5]=i,g[9]=k,g[13]=0,g[2]=0,g[6]=0,g[10]=l,g[14]=m,g[3]=0,g[7]=0,g[11]=-1,g[15]=0,this},makePerspective:function(b,c,d,e){var f=d*Math.tan(a.Math.degToRad(.5*b)),g=-f,h=g*c,i=f*c;return this.makeFrustum(h,i,g,f,d,e)},makeOrthographic:function(a,b,c,d,e,f){var g=this.elements,h=b-a,i=c-d,j=f-e,k=(b+a)/h,l=(c+d)/i,m=(f+e)/j;return g[0]=2/h,g[4]=0,g[8]=0,g[12]=-k,g[1]=0,g[5]=2/i,g[9]=0,g[13]=-l,g[2]=0,g[6]=0,g[10]=-2/j,g[14]=-m,g[3]=0,g[7]=0,g[11]=0,g[15]=1,this},fromArray:function(a){return this.elements.set(a),this},toArray:function(){var a=this.elements;return[a[0],a[1],a[2],a[3],a[4],a[5],a[6],a[7],a[8],a[9],a[10],a[11],a[12],a[13],a[14],a[15]]},clone:function(){var b=this.elements;return new a.Matrix4(b[0],b[4],b[8],b[12],b[1],b[5],b[9],b[13],b[2],b[6],b[10],b[14],b[3],b[7],b[11],b[15])}},a.Ray=function(b,c){this.origin=void 0!==b?b:new a.Vector3,this.direction=void 0!==c?c:new a.Vector3},a.Ray.prototype={constructor:a.Ray,set:function(a,b){return this.origin.copy(a),this.direction.copy(b),this},copy:function(a){return this.origin.copy(a.origin),this.direction.copy(a.direction),this},at:function(b,c){var d=c||new a.Vector3;return d.copy(this.direction).multiplyScalar(b).add(this.origin)},recast:function(){var b=new a.Vector3;return function(a){return this.origin.copy(this.at(a,b)),this}}(),closestPointToPoint:function(b,c){var d=c||new a.Vector3;d.subVectors(b,this.origin);var e=d.dot(this.direction);return 0>e?d.copy(this.origin):d.copy(this.direction).multiplyScalar(e).add(this.origin)},distanceToPoint:function(){var b=new a.Vector3;return function(a){var c=b.subVectors(a,this.origin).dot(this.direction);return 0>c?this.origin.distanceTo(a):(b.copy(this.direction).multiplyScalar(c).add(this.origin),b.distanceTo(a))}}(),distanceSqToSegment:function(a,b,c,d){var e,f,g,h,i=a.clone().add(b).multiplyScalar(.5),j=b.clone().sub(a).normalize(),k=.5*a.distanceTo(b),l=this.origin.clone().sub(i),m=-this.direction.dot(j),n=l.dot(this.direction),o=-l.dot(j),p=l.lengthSq(),q=Math.abs(1-m*m);if(q>=0)if(e=m*o-n,f=m*n-o,h=k*q,e>=0)if(f>=-h)if(h>=f){var r=1/q;e*=r,f*=r,g=e*(e+m*f+2*n)+f*(m*e+f+2*o)+p}else f=k,e=Math.max(0,-(m*f+n)),g=-e*e+f*(f+2*o)+p;else f=-k,e=Math.max(0,-(m*f+n)),g=-e*e+f*(f+2*o)+p;else-h>=f?(e=Math.max(0,-(-m*k+n)),f=e>0?-k:Math.min(Math.max(-k,-o),k),g=-e*e+f*(f+2*o)+p):h>=f?(e=0,f=Math.min(Math.max(-k,-o),k),g=f*(f+2*o)+p):(e=Math.max(0,-(m*k+n)),f=e>0?k:Math.min(Math.max(-k,-o),k),g=-e*e+f*(f+2*o)+p);else f=m>0?-k:k,e=Math.max(0,-(m*f+n)),g=-e*e+f*(f+2*o)+p;return c&&c.copy(this.direction.clone().multiplyScalar(e).add(this.origin)),d&&d.copy(j.clone().multiplyScalar(f).add(i)),g},isIntersectionSphere:function(a){return this.distanceToPoint(a.center)<=a.radius},isIntersectionPlane:function(a){var b=a.distanceToPoint(this.origin);if(0===b)return!0;var c=a.normal.dot(this.direction);return 0>c*b?!0:!1},distanceToPlane:function(a){var b=a.normal.dot(this.direction);if(0==b)return 0==a.distanceToPoint(this.origin)?0:null;var c=-(this.origin.dot(a.normal)+a.constant)/b;return c>=0?c:null},intersectPlane:function(a,b){var c=this.distanceToPlane(a);return null===c?null:this.at(c,b)},isIntersectionBox:function(){var b=new a.Vector3;return function(a){return null!==this.intersectBox(a,b)}}(),intersectBox:function(a,b){var c,d,e,f,g,h,i=1/this.direction.x,j=1/this.direction.y,k=1/this.direction.z,l=this.origin;return i>=0?(c=(a.min.x-l.x)*i,d=(a.max.x-l.x)*i):(c=(a.max.x-l.x)*i,d=(a.min.x-l.x)*i),j>=0?(e=(a.min.y-l.y)*j,f=(a.max.y-l.y)*j):(e=(a.max.y-l.y)*j,f=(a.min.y-l.y)*j),c>f||e>d?null:((e>c||c!==c)&&(c=e),(d>f||d!==d)&&(d=f),k>=0?(g=(a.min.z-l.z)*k,h=(a.max.z-l.z)*k):(g=(a.max.z-l.z)*k,h=(a.min.z-l.z)*k),c>h||g>d?null:((g>c||c!==c)&&(c=g),(d>h||d!==d)&&(d=h),0>d?null:this.at(c>=0?c:d,b)))},intersectTriangle:function(){var b=new a.Vector3,c=new a.Vector3,d=new a.Vector3,e=new a.Vector3;return function(a,f,g,h,i){c.subVectors(f,a),d.subVectors(g,a),e.crossVectors(c,d);var j,k=this.direction.dot(e);if(k>0){if(h)return null;j=1}else{if(!(0>k))return null;j=-1,k=-k}b.subVectors(this.origin,a);var l=j*this.direction.dot(d.crossVectors(b,d));if(0>l)return null;var m=j*this.direction.dot(c.cross(b));if(0>m)return null;if(l+m>k)return null;var n=-j*b.dot(e);return 0>n?null:this.at(n/k,i)}}(),applyMatrix4:function(a){return this.direction.add(this.origin).applyMatrix4(a),this.origin.applyMatrix4(a),this.direction.sub(this.origin),this.direction.normalize(),this},equals:function(a){return a.origin.equals(this.origin)&&a.direction.equals(this.direction)},clone:function(){return(new a.Ray).copy(this)}},a.Sphere=function(b,c){this.center=void 0!==b?b:new a.Vector3,this.radius=void 0!==c?c:0},a.Sphere.prototype={constructor:a.Sphere,set:function(a,b){return this.center.copy(a),this.radius=b,this},setFromPoints:function(){var b=new a.Box3;return function(a,c){var d=this.center;void 0!==c?d.copy(c):b.setFromPoints(a).center(d);for(var e=0,f=0,g=a.length;g>f;f++)e=Math.max(e,d.distanceToSquared(a[f]));return this.radius=Math.sqrt(e),this}}(),copy:function(a){return this.center.copy(a.center),this.radius=a.radius,this},empty:function(){return this.radius<=0},containsPoint:function(a){return a.distanceToSquared(this.center)<=this.radius*this.radius},distanceToPoint:function(a){return a.distanceTo(this.center)-this.radius},intersectsSphere:function(a){var b=this.radius+a.radius;return a.center.distanceToSquared(this.center)<=b*b},clampPoint:function(b,c){var d=this.center.distanceToSquared(b),e=c||new a.Vector3;return e.copy(b),d>this.radius*this.radius&&(e.sub(this.center).normalize(),e.multiplyScalar(this.radius).add(this.center)),e},getBoundingBox:function(b){var c=b||new a.Box3;return c.set(this.center,this.center),c.expandByScalar(this.radius),c},applyMatrix4:function(a){return this.center.applyMatrix4(a),this.radius=this.radius*a.getMaxScaleOnAxis(),this},translate:function(a){return this.center.add(a),this},equals:function(a){return a.center.equals(this.center)&&a.radius===this.radius},clone:function(){return(new a.Sphere).copy(this)}},a.Frustum=function(b,c,d,e,f,g){this.planes=[void 0!==b?b:new a.Plane,void 0!==c?c:new a.Plane,void 0!==d?d:new a.Plane,void 0!==e?e:new a.Plane,void 0!==f?f:new a.Plane,void 0!==g?g:new a.Plane]},a.Frustum.prototype={constructor:a.Frustum,set:function(a,b,c,d,e,f){var g=this.planes;return g[0].copy(a),g[1].copy(b),g[2].copy(c),g[3].copy(d),g[4].copy(e),g[5].copy(f),this},copy:function(a){for(var b=this.planes,c=0;6>c;c++)b[c].copy(a.planes[c]);return this},setFromMatrix:function(a){var b=this.planes,c=a.elements,d=c[0],e=c[1],f=c[2],g=c[3],h=c[4],i=c[5],j=c[6],k=c[7],l=c[8],m=c[9],n=c[10],o=c[11],p=c[12],q=c[13],r=c[14],s=c[15];return b[0].setComponents(g-d,k-h,o-l,s-p).normalize(),b[1].setComponents(g+d,k+h,o+l,s+p).normalize(),b[2].setComponents(g+e,k+i,o+m,s+q).normalize(),b[3].setComponents(g-e,k-i,o-m,s-q).normalize(),b[4].setComponents(g-f,k-j,o-n,s-r).normalize(),b[5].setComponents(g+f,k+j,o+n,s+r).normalize(),this},intersectsObject:function(){var b=new a.Sphere;return function(a){var c=a.geometry;return null===c.boundingSphere&&c.computeBoundingSphere(),b.copy(c.boundingSphere),b.applyMatrix4(a.matrixWorld),this.intersectsSphere(b)}}(),intersectsSphere:function(a){for(var b=this.planes,c=a.center,d=-a.radius,e=0;6>e;e++){var f=b[e].distanceToPoint(c);if(d>f)return!1}return!0},intersectsBox:function(){var b=new a.Vector3,c=new a.Vector3;return function(a){for(var d=this.planes,e=0;6>e;e++){var f=d[e];b.x=f.normal.x>0?a.min.x:a.max.x,c.x=f.normal.x>0?a.max.x:a.min.x,b.y=f.normal.y>0?a.min.y:a.max.y,c.y=f.normal.y>0?a.max.y:a.min.y,b.z=f.normal.z>0?a.min.z:a.max.z,c.z=f.normal.z>0?a.max.z:a.min.z;var g=f.distanceToPoint(b),h=f.distanceToPoint(c);if(0>g&&0>h)return!1}return!0}}(),containsPoint:function(a){for(var b=this.planes,c=0;6>c;c++)if(b[c].distanceToPoint(a)<0)return!1;return!0},clone:function(){return(new a.Frustum).copy(this)}},a.Plane=function(b,c){this.normal=void 0!==b?b:new a.Vector3(1,0,0),this.constant=void 0!==c?c:0},a.Plane.prototype={constructor:a.Plane,set:function(a,b){return this.normal.copy(a),this.constant=b,this},setComponents:function(a,b,c,d){return this.normal.set(a,b,c),this.constant=d,this},setFromNormalAndCoplanarPoint:function(a,b){return this.normal.copy(a),this.constant=-b.dot(this.normal),this},setFromCoplanarPoints:function(){var b=new a.Vector3,c=new a.Vector3;return function(a,d,e){var f=b.subVectors(e,d).cross(c.subVectors(a,d)).normalize();return this.setFromNormalAndCoplanarPoint(f,a),this}}(),copy:function(a){return this.normal.copy(a.normal),this.constant=a.constant,this},normalize:function(){var a=1/this.normal.length();return this.normal.multiplyScalar(a),this.constant*=a,this},negate:function(){return this.constant*=-1,this.normal.negate(),this},distanceToPoint:function(a){return this.normal.dot(a)+this.constant},distanceToSphere:function(a){return this.distanceToPoint(a.center)-a.radius},projectPoint:function(a,b){return this.orthoPoint(a,b).sub(a).negate()},orthoPoint:function(b,c){var d=this.distanceToPoint(b),e=c||new a.Vector3;return e.copy(this.normal).multiplyScalar(d)},isIntersectionLine:function(a){var b=this.distanceToPoint(a.start),c=this.distanceToPoint(a.end);return 0>b&&c>0||0>c&&b>0},intersectLine:function(){var b=new a.Vector3;return function(c,d){var e=d||new a.Vector3,f=c.delta(b),g=this.normal.dot(f);if(0==g)return 0==this.distanceToPoint(c.start)?e.copy(c.start):void 0;var h=-(c.start.dot(this.normal)+this.constant)/g;return 0>h||h>1?void 0:e.copy(f).multiplyScalar(h).add(c.start)}}(),coplanarPoint:function(b){var c=b||new a.Vector3;return c.copy(this.normal).multiplyScalar(-this.constant)},applyMatrix4:function(){var b=new a.Vector3,c=new a.Vector3,d=new a.Matrix3;return function(a,e){var f=e||d.getNormalMatrix(a),g=b.copy(this.normal).applyMatrix3(f),h=this.coplanarPoint(c);return h.applyMatrix4(a),this.setFromNormalAndCoplanarPoint(g,h),this}}(),translate:function(a){return this.constant=this.constant-a.dot(this.normal),this},equals:function(a){return a.normal.equals(this.normal)&&a.constant==this.constant},clone:function(){return(new a.Plane).copy(this)}},a.Math={PI2:2*Math.PI,generateUUID:function(){var a,b="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz".split(""),c=new Array(36),d=0;return function(){for(var e=0;36>e;e++)8==e||13==e||18==e||23==e?c[e]="-":14==e?c[e]="4":(2>=d&&(d=33554432+16777216*Math.random()|0),a=15&d,d>>=4,c[e]=b[19==e?3&a|8:a]);return c.join("")}}(),clamp:function(a,b,c){return b>a?b:a>c?c:a},clampBottom:function(a,b){return b>a?b:a},mapLinear:function(a,b,c,d,e){return d+(a-b)*(e-d)/(c-b)},smoothstep:function(a,b,c){return b>=a?0:a>=c?1:(a=(a-b)/(c-b),a*a*(3-2*a))},smootherstep:function(a,b,c){return b>=a?0:a>=c?1:(a=(a-b)/(c-b),a*a*a*(a*(6*a-15)+10))},random16:function(){return(65280*Math.random()+255*Math.random())/65535},randInt:function(a,b){return a+Math.floor(Math.random()*(b-a+1))},randFloat:function(a,b){return a+Math.random()*(b-a)},randFloatSpread:function(a){return a*(.5-Math.random())},sign:function(a){return 0>a?-1:a>0?1:0},degToRad:function(){var a=Math.PI/180;return function(b){return b*a}}(),radToDeg:function(){var a=180/Math.PI;return function(b){return b*a}}(),isPowerOfTwo:function(a){return 0===(a&a-1)&&0!==a}},a.Spline=function(b){function c(a,b,c,d,e,f,g){var h=.5*(c-a),i=.5*(d-b);return(2*(b-c)+h+i)*g+(-3*(b-c)-2*h-i)*f+h*e+b}this.points=b;var d,e,f,g,h,i,j,k,l,m=[],n={x:0,y:0,z:0};this.initFromArray=function(a){this.points=[];for(var b=0;bthis.points.length-2?this.points.length-1:e+1,m[3]=e>this.points.length-3?this.points.length-1:e+2,i=this.points[m[0]],j=this.points[m[1]],k=this.points[m[2]],l=this.points[m[3]],g=f*f,h=f*g,n.x=c(i.x,j.x,k.x,l.x,f,g,h),n.y=c(i.y,j.y,k.y,l.y,f,g,h),n.z=c(i.z,j.z,k.z,l.z,f,g,h),n},this.getControlPointsArray=function(){var a,b,c=this.points.length,d=[];for(a=0;c>a;a++)b=this.points[a],d[a]=[b.x,b.y,b.z];return d},this.getLength=function(b){var c,d,e,f,g=0,h=0,i=0,j=new a.Vector3,k=new a.Vector3,l=[],m=0;for(l[0]=0,b||(b=100),e=this.points.length*b,j.copy(this.points[0]),c=1;e>c;c++)d=c/e,f=this.getPoint(d),k.copy(f),m+=k.distanceTo(j),j.copy(f),g=(this.points.length-1)*d,h=Math.floor(g),h!=i&&(l[h]=m,i=h);return l[l.length]=m,{chunks:l,total:m}},this.reparametrizeByArcLength=function(b){var c,d,e,f,g,h,i,j,k=[],l=new a.Vector3,m=this.getLength();for(k.push(l.copy(this.points[0]).clone()),c=1;cd;d++)e=f+d*(1/i)*(g-f),j=this.getPoint(e),k.push(l.copy(j).clone());k.push(l.copy(this.points[c]).clone())}this.points=k}},a.Triangle=function(b,c,d){this.a=void 0!==b?b:new a.Vector3,this.b=void 0!==c?c:new a.Vector3,this.c=void 0!==d?d:new a.Vector3},a.Triangle.normal=function(){var b=new a.Vector3;return function(c,d,e,f){var g=f||new a.Vector3;g.subVectors(e,d),b.subVectors(c,d),g.cross(b);var h=g.lengthSq();return h>0?g.multiplyScalar(1/Math.sqrt(h)):g.set(0,0,0)}}(),a.Triangle.barycoordFromPoint=function(){var b=new a.Vector3,c=new a.Vector3,d=new a.Vector3;return function(e,f,g,h,i){b.subVectors(h,f),c.subVectors(g,f),d.subVectors(e,f);var j=b.dot(b),k=b.dot(c),l=b.dot(d),m=c.dot(c),n=c.dot(d),o=j*m-k*k,p=i||new a.Vector3;if(0==o)return p.set(-2,-1,-1);var q=1/o,r=(m*l-k*n)*q,s=(j*n-k*l)*q;return p.set(1-r-s,s,r)}}(),a.Triangle.containsPoint=function(){var b=new a.Vector3;return function(c,d,e,f){var g=a.Triangle.barycoordFromPoint(c,d,e,f,b);return g.x>=0&&g.y>=0&&g.x+g.y<=1}}(),a.Triangle.prototype={constructor:a.Triangle,set:function(a,b,c){return this.a.copy(a),this.b.copy(b),this.c.copy(c),this},setFromPointsAndIndices:function(a,b,c,d){return this.a.copy(a[b]),this.b.copy(a[c]),this.c.copy(a[d]),this},copy:function(a){return this.a.copy(a.a),this.b.copy(a.b),this.c.copy(a.c),this},area:function(){var b=new a.Vector3,c=new a.Vector3;return function(){return b.subVectors(this.c,this.b),c.subVectors(this.a,this.b),.5*b.cross(c).length()}}(),midpoint:function(b){var c=b||new a.Vector3;return c.addVectors(this.a,this.b).add(this.c).multiplyScalar(1/3)},normal:function(b){return a.Triangle.normal(this.a,this.b,this.c,b)},plane:function(b){var c=b||new a.Plane;return c.setFromCoplanarPoints(this.a,this.b,this.c)},barycoordFromPoint:function(b,c){return a.Triangle.barycoordFromPoint(b,this.a,this.b,this.c,c)},containsPoint:function(b){return a.Triangle.containsPoint(b,this.a,this.b,this.c)},equals:function(a){return a.a.equals(this.a)&&a.b.equals(this.b)&&a.c.equals(this.c)},clone:function(){return(new a.Triangle).copy(this)}},a.Vertex=function(a){return console.warn("THREE.Vertex has been DEPRECATED. Use THREE.Vector3 instead."),a},a.UV=function(b,c){return console.warn("THREE.UV has been DEPRECATED. Use THREE.Vector2 instead."),new a.Vector2(b,c)},a.Clock=function(a){this.autoStart=void 0!==a?a:!0,this.startTime=0,this.oldTime=0,this.elapsedTime=0,this.running=!1},a.Clock.prototype={constructor:a.Clock,start:function(){this.startTime=void 0!==self.performance&&void 0!==self.performance.now?self.performance.now():Date.now(),this.oldTime=this.startTime,this.running=!0},stop:function(){this.getElapsedTime(),this.running=!1},getElapsedTime:function(){return this.getDelta(),this.elapsedTime},getDelta:function(){var a=0;if(this.autoStart&&!this.running&&this.start(),this.running){var b=void 0!==self.performance&&void 0!==self.performance.now?self.performance.now():Date.now();a=.001*(b-this.oldTime),this.oldTime=b,this.elapsedTime+=a}return a}},a.EventDispatcher=function(){},a.EventDispatcher.prototype={constructor:a.EventDispatcher,apply:function(b){b.addEventListener=a.EventDispatcher.prototype.addEventListener,b.hasEventListener=a.EventDispatcher.prototype.hasEventListener,b.removeEventListener=a.EventDispatcher.prototype.removeEventListener,b.dispatchEvent=a.EventDispatcher.prototype.dispatchEvent},addEventListener:function(a,b){void 0===this._listeners&&(this._listeners={});var c=this._listeners;void 0===c[a]&&(c[a]=[]),-1===c[a].indexOf(b)&&c[a].push(b)},hasEventListener:function(a,b){if(void 0===this._listeners)return!1;var c=this._listeners;return void 0!==c[a]&&-1!==c[a].indexOf(b)?!0:!1},removeEventListener:function(a,b){if(void 0!==this._listeners){var c=this._listeners,d=c[a];if(void 0!==d){var e=d.indexOf(b);-1!==e&&d.splice(e,1)}}},dispatchEvent:function(){var a=[];return function(b){if(void 0!==this._listeners){var c=this._listeners,d=c[b.type];if(void 0!==d){b.target=this;for(var e=d.length,f=0;e>f;f++)a[f]=d[f];for(var f=0;e>f;f++)a[f].call(this,b)}}}}()},function(a){a.Raycaster=function(b,c,d,e){this.ray=new a.Ray(b,c),this.near=d||0,this.far=e||1/0};var b=new a.Sphere,c=new a.Ray,d=(new a.Plane,new a.Vector3,new a.Vector3),e=new a.Matrix4,f=function(a,b){return a.distance-b.distance},g=new a.Vector3,h=new a.Vector3,i=new a.Vector3,j=function(f,k,l){if(f instanceof a.Sprite){d.setFromMatrixPosition(f.matrixWorld);var m=k.ray.distanceToPoint(d);if(m>f.scale.x)return l;l.push({distance:m,point:f.position,face:null,object:f})}else if(f instanceof a.LOD){d.setFromMatrixPosition(f.matrixWorld);var m=k.ray.origin.distanceTo(d);j(f.getObjectForDistance(m),k,l)}else if(f instanceof a.Mesh){var n=f.geometry;if(null===n.boundingSphere&&n.computeBoundingSphere(),b.copy(n.boundingSphere),b.applyMatrix4(f.matrixWorld),k.ray.isIntersectionSphere(b)===!1)return l;if(e.getInverse(f.matrixWorld),c.copy(k.ray).applyMatrix4(e),null!==n.boundingBox&&c.isIntersectionBox(n.boundingBox)===!1)return l;if(n instanceof a.BufferGeometry){var o=f.material;if(void 0===o)return l;var p,q,r,s=n.attributes,t=k.precision;if(void 0!==s.index)for(var u=n.offsets,v=s.index.array,w=s.position.array,x=0,y=u.length;y>x;++x)for(var z=u[x].start,A=u[x].count,B=u[x].index,C=z,D=z+A;D>C;C+=3){if(p=B+v[C],q=B+v[C+1],r=B+v[C+2],g.set(w[3*p],w[3*p+1],w[3*p+2]),h.set(w[3*q],w[3*q+1],w[3*q+2]),i.set(w[3*r],w[3*r+1],w[3*r+2]),o.side===a.BackSide)var E=c.intersectTriangle(i,h,g,!0);else var E=c.intersectTriangle(g,h,i,o.side!==a.DoubleSide);if(null!==E){E.applyMatrix4(f.matrixWorld);var m=k.ray.origin.distanceTo(E);t>m||mk.far||l.push({distance:m,point:E,indices:[p,q,r],face:null,faceIndex:null,object:f})}}else for(var u=n.offsets,w=s.position.array,C=0,D=s.position.array.length;D>C;C+=3){if(p=C,q=C+1,r=C+2,g.set(w[3*p],w[3*p+1],w[3*p+2]),h.set(w[3*q],w[3*q+1],w[3*q+2]),i.set(w[3*r],w[3*r+1],w[3*r+2]),o.side===a.BackSide)var E=c.intersectTriangle(i,h,g,!0);else var E=c.intersectTriangle(g,h,i,o.side!==a.DoubleSide);if(null!==E){E.applyMatrix4(f.matrixWorld);var m=k.ray.origin.distanceTo(E);t>m||mk.far||l.push({distance:m,point:E,indices:[p,q,r],face:null,faceIndex:null,object:f})}}}else if(n instanceof a.Geometry)for(var p,q,r,F=f.material instanceof a.MeshFaceMaterial,G=F===!0?f.material.materials:null,t=k.precision,H=n.vertices,I=0,J=n.faces.length;J>I;I++){var K=n.faces[I],o=F===!0?G[K.materialIndex]:f.material;if(void 0!==o){if(p=H[K.a],q=H[K.b],r=H[K.c],o.morphTargets===!0){var L=n.morphTargets,M=f.morphTargetInfluences;g.set(0,0,0),h.set(0,0,0),i.set(0,0,0);for(var N=0,O=L.length;O>N;N++){var P=M[N];if(0!==P){var Q=L[N].vertices;g.x+=(Q[K.a].x-p.x)*P,g.y+=(Q[K.a].y-p.y)*P,g.z+=(Q[K.a].z-p.z)*P,h.x+=(Q[K.b].x-q.x)*P,h.y+=(Q[K.b].y-q.y)*P,h.z+=(Q[K.b].z-q.z)*P,i.x+=(Q[K.c].x-r.x)*P,i.y+=(Q[K.c].y-r.y)*P,i.z+=(Q[K.c].z-r.z)*P}}g.add(p),h.add(q),i.add(r),p=g,q=h,r=i}if(o.side===a.BackSide)var E=c.intersectTriangle(r,q,p,!0);else var E=c.intersectTriangle(p,q,r,o.side!==a.DoubleSide);if(null!==E){E.applyMatrix4(f.matrixWorld);var m=k.ray.origin.distanceTo(E);t>m||mk.far||l.push({distance:m,point:E,face:K,faceIndex:I,object:f})}}}}else if(f instanceof a.Line){var t=k.linePrecision,R=t*t,n=f.geometry;if(null===n.boundingSphere&&n.computeBoundingSphere(),b.copy(n.boundingSphere),b.applyMatrix4(f.matrixWorld),k.ray.isIntersectionSphere(b)===!1)return l;if(e.getInverse(f.matrixWorld),c.copy(k.ray).applyMatrix4(e),n instanceof a.Geometry)for(var H=n.vertices,S=H.length,T=new a.Vector3,U=new a.Vector3,V=f.type===a.LineStrip?1:2,C=0;S-1>C;C+=V){var W=c.distanceSqToSegment(H[C],H[C+1],U,T);if(!(W>R)){var m=c.origin.distanceTo(U);mk.far||l.push({distance:m,point:T.clone().applyMatrix4(f.matrixWorld),face:null,faceIndex:null,object:f})}}}},k=function(a,b,c){for(var d=a.getDescendants(),e=0,f=d.length;f>e;e++)j(d[e],b,c)};a.Raycaster.prototype.precision=1e-4,a.Raycaster.prototype.linePrecision=1,a.Raycaster.prototype.set=function(a,b){this.ray.set(a,b)},a.Raycaster.prototype.intersectObject=function(a,b){var c=[];return b===!0&&k(a,this,c),j(a,this,c),c.sort(f),c},a.Raycaster.prototype.intersectObjects=function(a,b){for(var c=[],d=0,e=a.length;e>d;d++)j(a[d],this,c),b===!0&&k(a[d],this,c);return c.sort(f),c}}(a),a.Object3D=function(){this.id=a.Object3DIdCount++,this.uuid=a.Math.generateUUID(),this.name="",this.parent=void 0,this.children=[],this.up=new a.Vector3(0,1,0),this.position=new a.Vector3,this._rotation=new a.Euler,this._quaternion=new a.Quaternion,this.scale=new a.Vector3(1,1,1),this._rotation._quaternion=this.quaternion,this._quaternion._euler=this.rotation,this.renderDepth=null,this.rotationAutoUpdate=!0,this.matrix=new a.Matrix4,this.matrixWorld=new a.Matrix4,this.matrixAutoUpdate=!0,this.matrixWorldNeedsUpdate=!0,this.visible=!0,this.castShadow=!1,this.receiveShadow=!1,this.frustumCulled=!0,this.userData={}},a.Object3D.prototype={constructor:a.Object3D,get rotation(){return this._rotation},set rotation(a){this._rotation=a,this._rotation._quaternion=this._quaternion,this._quaternion._euler=this._rotation,this._rotation._updateQuaternion()},get quaternion(){return this._quaternion},set quaternion(a){this._quaternion=a,this._quaternion._euler=this._rotation,this._rotation._quaternion=this._quaternion,this._quaternion._updateEuler()},get eulerOrder(){return console.warn("DEPRECATED: Object3D's .eulerOrder has been moved to Object3D's .rotation.order."),this.rotation.order},set eulerOrder(a){console.warn("DEPRECATED: Object3D's .eulerOrder has been moved to Object3D's .rotation.order."),this.rotation.order=a},get useQuaternion(){console.warn("DEPRECATED: Object3D's .useQuaternion has been removed. The library now uses quaternions by default.")},set useQuaternion(a){console.warn("DEPRECATED: Object3D's .useQuaternion has been removed. The library now uses quaternions by default.")},applyMatrix:function(a){this.matrix.multiplyMatrices(a,this.matrix),this.matrix.decompose(this.position,this.quaternion,this.scale)},setRotationFromAxisAngle:function(a,b){this.quaternion.setFromAxisAngle(a,b)},setRotationFromEuler:function(a){this.quaternion.setFromEuler(a,!0)},setRotationFromMatrix:function(a){this.quaternion.setFromRotationMatrix(a)},setRotationFromQuaternion:function(a){this.quaternion.copy(a)},rotateOnAxis:function(){var b=new a.Quaternion;return function(a,c){return b.setFromAxisAngle(a,c),this.quaternion.multiply(b),this}}(),rotateX:function(){var b=new a.Vector3(1,0,0);return function(a){return this.rotateOnAxis(b,a)}}(),rotateY:function(){var b=new a.Vector3(0,1,0);return function(a){return this.rotateOnAxis(b,a)}}(),rotateZ:function(){var b=new a.Vector3(0,0,1);return function(a){return this.rotateOnAxis(b,a)}}(),translateOnAxis:function(){var b=new a.Vector3;return function(a,c){return b.copy(a),b.applyQuaternion(this.quaternion),this.position.add(b.multiplyScalar(c)),this}}(),translate:function(a,b){return console.warn("DEPRECATED: Object3D's .translate() has been removed. Use .translateOnAxis( axis, distance ) instead. Note args have been changed."),this.translateOnAxis(b,a)},translateX:function(){var b=new a.Vector3(1,0,0);return function(a){return this.translateOnAxis(b,a)}}(),translateY:function(){var b=new a.Vector3(0,1,0);return function(a){return this.translateOnAxis(b,a)}}(),translateZ:function(){var b=new a.Vector3(0,0,1);return function(a){return this.translateOnAxis(b,a)}}(),localToWorld:function(a){return a.applyMatrix4(this.matrixWorld)},worldToLocal:function(){var b=new a.Matrix4;return function(a){return a.applyMatrix4(b.getInverse(this.matrixWorld))}}(),lookAt:function(){var b=new a.Matrix4;return function(a){b.lookAt(a,this.position,this.up),this.quaternion.setFromRotationMatrix(b)}}(),add:function(b){if(b===this)return void console.warn("THREE.Object3D.add: An object can't be added as a child of itself.");if(b instanceof a.Object3D){void 0!==b.parent&&b.parent.remove(b),b.parent=this,b.dispatchEvent({type:"added"}),this.children.push(b);for(var c=this;void 0!==c.parent;)c=c.parent;void 0!==c&&c instanceof a.Scene&&c.__addObject(b)}},remove:function(b){var c=this.children.indexOf(b);if(-1!==c){b.parent=void 0,b.dispatchEvent({type:"removed"}),this.children.splice(c,1);for(var d=this;void 0!==d.parent;)d=d.parent;void 0!==d&&d instanceof a.Scene&&d.__removeObject(b)}},traverse:function(a){a(this);for(var b=0,c=this.children.length;c>b;b++)this.children[b].traverse(a)},getObjectById:function(a,b){for(var c=0,d=this.children.length;d>c;c++){var e=this.children[c];if(e.id===a)return e;if(b===!0&&(e=e.getObjectById(a,b),void 0!==e))return e}return void 0},getObjectByName:function(a,b){for(var c=0,d=this.children.length;d>c;c++){var e=this.children[c];if(e.name===a)return e;if(b===!0&&(e=e.getObjectByName(a,b),void 0!==e))return e}return void 0},getChildByName:function(a,b){return console.warn("DEPRECATED: Object3D's .getChildByName() has been renamed to .getObjectByName()."),this.getObjectByName(a,b)},getDescendants:function(a){void 0===a&&(a=[]),Array.prototype.push.apply(a,this.children);for(var b=0,c=this.children.length;c>b;b++)this.children[b].getDescendants(a);return a},updateMatrix:function(){this.matrix.compose(this.position,this.quaternion,this.scale),this.matrixWorldNeedsUpdate=!0},updateMatrixWorld:function(a){this.matrixAutoUpdate===!0&&this.updateMatrix(),(this.matrixWorldNeedsUpdate===!0||a===!0)&&(void 0===this.parent?this.matrixWorld.copy(this.matrix):this.matrixWorld.multiplyMatrices(this.parent.matrixWorld,this.matrix),this.matrixWorldNeedsUpdate=!1,a=!0);for(var b=0,c=this.children.length;c>b;b++)this.children[b].updateMatrixWorld(a)},clone:function(b,c){if(void 0===b&&(b=new a.Object3D),void 0===c&&(c=!0),b.name=this.name,b.up.copy(this.up),b.position.copy(this.position),b.quaternion.copy(this.quaternion),b.scale.copy(this.scale),b.renderDepth=this.renderDepth,b.rotationAutoUpdate=this.rotationAutoUpdate,b.matrix.copy(this.matrix),b.matrixWorld.copy(this.matrixWorld),b.matrixAutoUpdate=this.matrixAutoUpdate,b.matrixWorldNeedsUpdate=this.matrixWorldNeedsUpdate,b.visible=this.visible,b.castShadow=this.castShadow,b.receiveShadow=this.receiveShadow,b.frustumCulled=this.frustumCulled,b.userData=JSON.parse(JSON.stringify(this.userData)),c===!0)for(var d=0;d=0&&f>=0&&g>=0&&h>=0?!0:0>e&&0>f||0>g&&0>h?!1:(0>e?c=Math.max(c,e/(e-f)):0>f&&(d=Math.min(d,e/(e-f))),0>g?c=Math.max(c,g/(g-h)):0>h&&(d=Math.min(d,g/(g-h))),c>d?!1:(a.lerp(b,c),b.lerp(a,1-d),!0))}var i,j,k,l,m,n,o,p,q,r,s,t=[],u=0,v=[],w=0,x=[],y=0,z=[],A=0,B=[],C=0,D={objects:[],lights:[],elements:[]},E=new a.Vector3,F=new a.Vector3,G=new a.Vector3,H=new a.Vector3,I=new a.Vector4,J=new a.Box3(new a.Vector3(-1,-1,-1),new a.Vector3(1,1,1)),K=new a.Box3,L=new Array(3),M=(new Array(4),new a.Matrix4),N=new a.Matrix4,O=new a.Matrix4,P=new a.Matrix3,Q=new a.Frustum,R=new a.Vector4,S=new a.Vector4;this.projectVector=function(a,b){return b.matrixWorldInverse.getInverse(b.matrixWorld),N.multiplyMatrices(b.projectionMatrix,b.matrixWorldInverse),a.applyProjection(N)},this.unprojectVector=function(){var b=new a.Matrix4;return function(a,c){return b.getInverse(c.projectionMatrix),N.multiplyMatrices(c.matrixWorld,b),a.applyProjection(N)}}(),this.pickingRay=function(b,c){b.z=-1;var d=new a.Vector3(b.x,b.y,1);return this.unprojectVector(b,c),this.unprojectVector(d,c),d.sub(b).normalize(),new a.Raycaster(b,d)};var T=function(c){if(c.visible!==!1){c instanceof a.Light?D.lights.push(c):(c instanceof a.Mesh||c instanceof a.Line||c instanceof a.Sprite)&&(c.frustumCulled===!1||Q.intersectsObject(c)===!0)&&(i=b(),i.id=c.id,i.object=c,null!==c.renderDepth?i.z=c.renderDepth:(H.setFromMatrixPosition(c.matrixWorld),H.applyProjection(N),i.z=H.z),D.objects.push(i));for(var d=0,e=c.children.length;e>d;d++)T(c.children[d])}},U=function(a,b){j=0,D.objects.length=0,D.lights.length=0,T(a),b===!0&&D.objects.sort(g)},V=function(){var b=[],f=null,g=new a.Matrix3,h=function(a){f=a,g.getNormalMatrix(f.matrixWorld),b.length=0 +},i=function(a){var b=a.position,c=a.positionWorld,d=a.positionScreen;c.copy(b).applyMatrix4(s),d.copy(c).applyMatrix4(N);var e=1/d.w;d.x*=e,d.y*=e,d.z*=e,a.visible=d.x>=-1&&d.x<=1&&d.y>=-1&&d.y<=1&&d.z>=-1&&d.z<=1},j=function(a,b,d){k=c(),k.position.set(a,b,d),i(k)},l=function(a,c,d){b.push(a,c,d)},n=function(a,b,c){return L[0]=a.positionScreen,L[1]=b.positionScreen,L[2]=c.positionScreen,a.visible===!0||b.visible===!0||c.visible===!0||J.isIntersectionBox(K.setFromPoints(L))?(c.positionScreen.x-a.positionScreen.x)*(b.positionScreen.y-a.positionScreen.y)-(c.positionScreen.y-a.positionScreen.y)*(b.positionScreen.x-a.positionScreen.x)<0:!1},p=function(a,b){var c=v[a],d=v[b];o=e(),o.id=f.id,o.v1.copy(c),o.v2.copy(d),o.z=(c.positionScreen.z+d.positionScreen.z)/2,o.material=f.material,D.elements.push(o)},q=function(a,c,e){var h=v[a],i=v[c],j=v[e];if(n(h,i,j)===!0){m=d(),m.id=f.id,m.v1.copy(h),m.v2.copy(i),m.v3.copy(j),m.z=(h.positionScreen.z+i.positionScreen.z+j.positionScreen.z)/3;for(var k=0;3>k;k++){var l=3*arguments[k],o=m.vertexNormalsModel[k];o.set(b[l+0],b[l+1],b[l+2]),o.applyMatrix3(g).normalize()}m.vertexNormalsLength=3,m.material=f.material,D.elements.push(m)}};return{setObject:h,projectVertex:i,checkTriangleVisibility:n,pushVertex:j,pushNormal:l,pushLine:p,pushTriangle:q}},W=new V;this.projectScene=function(b,i,j,k){var t,u,w,x,y,z,A,B,C,H;n=0,p=0,r=0,D.elements.length=0,b.autoUpdate===!0&&b.updateMatrixWorld(),void 0===i.parent&&i.updateMatrixWorld(),M.copy(i.matrixWorldInverse.getInverse(i.matrixWorld)),N.multiplyMatrices(i.projectionMatrix,M),Q.setFromMatrix(N),U(b,j);for(var J=0,K=D.objects.length;K>J;J++)if(t=D.objects[J].object,u=t.geometry,W.setObject(t),s=t.matrixWorld,l=0,t instanceof a.Mesh){if(u instanceof a.BufferGeometry){var L=u.attributes,T=u.offsets;if(void 0===L.position)continue;for(var V=L.position.array,X=0,Y=V.length;Y>X;X+=3)W.pushVertex(V[X],V[X+1],V[X+2]);for(var Z=L.normal.array,X=0,Y=Z.length;Y>X;X+=3)W.pushNormal(Z[X],Z[X+1],Z[X+2]);if(void 0!==L.index){var $=L.index.array;if(T.length>0)for(var J=0;JX;X+=3)W.pushTriangle($[X]+ab,$[X+1]+ab,$[X+2]+ab);else for(var X=0,Y=$.length;Y>X;X+=3)W.pushTriangle($[X],$[X+1],$[X+2])}else for(var X=0,Y=V.length/3;Y>X;X+=3)W.pushTriangle(X,X+1,X+2)}else if(u instanceof a.Geometry){w=u.vertices,x=u.faces,A=u.faceVertexUvs,P.getNormalMatrix(s),C=t.material instanceof a.MeshFaceMaterial,H=C===!0?t.material:null;for(var bb=0,cb=w.length;cb>bb;bb++){var db=w[bb];W.pushVertex(db.x,db.y,db.z)}for(var eb=0,fb=x.length;fb>eb;eb++){y=x[eb];var gb=C===!0?H.materials[y.materialIndex]:t.material;if(void 0!==gb){var hb=gb.side,ib=v[y.a],jb=v[y.b],kb=v[y.c];if(gb.morphTargets===!0){var lb=u.morphTargets,mb=t.morphTargetInfluences,nb=ib.position,ob=jb.position,pb=kb.position;E.set(0,0,0),F.set(0,0,0),G.set(0,0,0);for(var qb=0,rb=lb.length;rb>qb;qb++){var sb=mb[qb];if(0!==sb){var tb=lb[qb].vertices;E.x+=(tb[y.a].x-nb.x)*sb,E.y+=(tb[y.a].y-nb.y)*sb,E.z+=(tb[y.a].z-nb.z)*sb,F.x+=(tb[y.b].x-ob.x)*sb,F.y+=(tb[y.b].y-ob.y)*sb,F.z+=(tb[y.b].z-ob.z)*sb,G.x+=(tb[y.c].x-pb.x)*sb,G.y+=(tb[y.c].y-pb.y)*sb,G.z+=(tb[y.c].z-pb.z)*sb}}ib.position.add(E),jb.position.add(F),kb.position.add(G),W.projectVertex(ib),W.projectVertex(jb),W.projectVertex(kb)}var ub=W.checkTriangleVisibility(ib,jb,kb);if(!(ub===!1&&hb===a.FrontSide||ub===!0&&hb===a.BackSide)){m=d(),m.id=t.id,m.v1.copy(ib),m.v2.copy(jb),m.v3.copy(kb),m.normalModel.copy(y.normal),ub!==!1||hb!==a.BackSide&&hb!==a.DoubleSide||m.normalModel.negate(),m.normalModel.applyMatrix3(P).normalize(),m.centroidModel.copy(y.centroid).applyMatrix4(s),z=y.vertexNormals;for(var vb=0,wb=Math.min(z.length,3);wb>vb;vb++){var xb=m.vertexNormalsModel[vb];xb.copy(z[vb]),ub!==!1||hb!==a.BackSide&&hb!==a.DoubleSide||xb.negate(),xb.applyMatrix3(P).normalize()}m.vertexNormalsLength=z.length;for(var yb=0,zb=Math.min(A.length,3);zb>yb;yb++)if(B=A[yb][eb],void 0!==B)for(var Ab=0,Bb=B.length;Bb>Ab;Ab++)m.uvs[yb][Ab]=B[Ab];m.color=y.color,m.material=gb,m.z=(ib.positionScreen.z+jb.positionScreen.z+kb.positionScreen.z)/3,D.elements.push(m)}}}}}else if(t instanceof a.Line){if(u instanceof a.BufferGeometry){var L=u.attributes;if(void 0!==L.position){for(var V=L.position.array,X=0,Y=V.length;Y>X;X+=3)W.pushVertex(V[X],V[X+1],V[X+2]);if(void 0!==L.index)for(var $=L.index.array,X=0,Y=$.length;Y>X;X+=2)W.pushLine($[X],$[X+1]);else for(var X=0,Y=V.length/3-1;Y>X;X++)W.pushLine(X,X+1)}}else if(u instanceof a.Geometry){if(O.multiplyMatrices(N,s),w=t.geometry.vertices,0===w.length)continue;ib=c(),ib.positionScreen.copy(w[0]).applyMatrix4(O);for(var Cb=t.type===a.LinePieces?2:1,bb=1,cb=w.length;cb>bb;bb++)ib=c(),ib.positionScreen.copy(w[bb]).applyMatrix4(O),(bb+1)%Cb>0||(jb=v[l-2],R.copy(ib.positionScreen),S.copy(jb.positionScreen),h(R,S)===!0&&(R.multiplyScalar(1/R.w),S.multiplyScalar(1/S.w),o=e(),o.id=t.id,o.v1.positionScreen.copy(R),o.v2.positionScreen.copy(S),o.z=Math.max(R.z,S.z),o.material=t.material,t.material.vertexColors===a.VertexColors&&(o.vertexColors[0].copy(t.geometry.colors[bb]),o.vertexColors[1].copy(t.geometry.colors[bb-1])),D.elements.push(o)))}}else if(t instanceof a.Sprite){I.set(s.elements[12],s.elements[13],s.elements[14],1),I.applyMatrix4(N);var Db=1/I.w;I.z*=Db,I.z>=-1&&I.z<=1&&(q=f(),q.id=t.id,q.x=I.x*Db,q.y=I.y*Db,q.z=I.z,q.object=t,q.rotation=t.rotation,q.scale.x=t.scale.x*Math.abs(q.x-(I.x+i.projectionMatrix.elements[0])/(I.w+i.projectionMatrix.elements[12])),q.scale.y=t.scale.y*Math.abs(q.y-(I.y+i.projectionMatrix.elements[5])/(I.w+i.projectionMatrix.elements[13])),q.material=t.material,D.elements.push(q))}return k===!0&&D.elements.sort(g),D}},a.Face3=function(b,c,d,e,f,g){this.a=b,this.b=c,this.c=d,this.normal=e instanceof a.Vector3?e:new a.Vector3,this.vertexNormals=e instanceof Array?e:[],this.color=f instanceof a.Color?f:new a.Color,this.vertexColors=f instanceof Array?f:[],this.vertexTangents=[],this.materialIndex=void 0!==g?g:0,this.centroid=new a.Vector3},a.Face3.prototype={constructor:a.Face3,clone:function(){var b=new a.Face3(this.a,this.b,this.c);b.normal.copy(this.normal),b.color.copy(this.color),b.centroid.copy(this.centroid),b.materialIndex=this.materialIndex;var c,d;for(c=0,d=this.vertexNormals.length;d>c;c++)b.vertexNormals[c]=this.vertexNormals[c].clone();for(c=0,d=this.vertexColors.length;d>c;c++)b.vertexColors[c]=this.vertexColors[c].clone();for(c=0,d=this.vertexTangents.length;d>c;c++)b.vertexTangents[c]=this.vertexTangents[c].clone();return b}},a.Face4=function(b,c,d,e,f,g,h){return console.warn("THREE.Face4 has been removed. A THREE.Face3 will be created instead."),new a.Face3(b,c,d,f,g,h)},a.BufferGeometry=function(){this.id=a.GeometryIdCount++,this.uuid=a.Math.generateUUID(),this.name="",this.attributes={},this.offsets=[],this.boundingBox=null,this.boundingSphere=null},a.BufferGeometry.prototype={constructor:a.BufferGeometry,addAttribute:function(a,b,c,d){return this.attributes[a]={array:new b(c*d),itemSize:d},this.attributes[a]},applyMatrix:function(b){var c=this.attributes.position;void 0!==c&&(b.multiplyVector3Array(c.array),c.needsUpdate=!0);var d=this.attributes.normal;if(void 0!==d){var e=(new a.Matrix3).getNormalMatrix(b);e.multiplyVector3Array(d.array),d.needsUpdate=!0}},computeBoundingBox:function(){null===this.boundingBox&&(this.boundingBox=new a.Box3);var b=this.attributes.position.array;if(b){var c=this.boundingBox;b.length>=3&&(c.min.x=c.max.x=b[0],c.min.y=c.max.y=b[1],c.min.z=c.max.z=b[2]);for(var d=3,e=b.length;e>d;d+=3){var f=b[d],g=b[d+1],h=b[d+2];fc.max.x&&(c.max.x=f),gc.max.y&&(c.max.y=g),hc.max.z&&(c.max.z=h)}}(void 0===b||0===b.length)&&(this.boundingBox.min.set(0,0,0),this.boundingBox.max.set(0,0,0))},computeBoundingSphere:function(){var b=new a.Box3,c=new a.Vector3;return function(){null===this.boundingSphere&&(this.boundingSphere=new a.Sphere);var d=this.attributes.position.array;if(d){b.makeEmpty();for(var e=this.boundingSphere.center,f=0,g=d.length;g>f;f+=3)c.set(d[f],d[f+1],d[f+2]),b.addPoint(c);b.center(e);for(var h=0,f=0,g=d.length;g>f;f+=3)c.set(d[f],d[f+1],d[f+2]),h=Math.max(h,e.distanceToSquared(c));this.boundingSphere.radius=Math.sqrt(h)}}}(),computeVertexNormals:function(){if(this.attributes.position){var b,c,d,e,f=this.attributes.position.array.length;if(void 0===this.attributes.normal)this.attributes.normal={itemSize:3,array:new Float32Array(f)};else for(b=0,c=this.attributes.normal.array.length;c>b;b++)this.attributes.normal.array[b]=0;var g,h,i,j,k,l,m=this.attributes.position.array,n=this.attributes.normal.array,o=new a.Vector3,p=new a.Vector3,q=new a.Vector3,r=new a.Vector3,s=new a.Vector3;if(this.attributes.index){var t=this.attributes.index.array,u=this.offsets;for(d=0,e=u.length;e>d;++d){var v=u[d].start,w=u[d].count,x=u[d].index;for(b=v,c=v+w;c>b;b+=3)g=x+t[b],h=x+t[b+1],i=x+t[b+2],j=m[3*g],k=m[3*g+1],l=m[3*g+2],o.set(j,k,l),j=m[3*h],k=m[3*h+1],l=m[3*h+2],p.set(j,k,l),j=m[3*i],k=m[3*i+1],l=m[3*i+2],q.set(j,k,l),r.subVectors(q,p),s.subVectors(o,p),r.cross(s),n[3*g]+=r.x,n[3*g+1]+=r.y,n[3*g+2]+=r.z,n[3*h]+=r.x,n[3*h+1]+=r.y,n[3*h+2]+=r.z,n[3*i]+=r.x,n[3*i+1]+=r.y,n[3*i+2]+=r.z}}else for(b=0,c=m.length;c>b;b+=9)j=m[b],k=m[b+1],l=m[b+2],o.set(j,k,l),j=m[b+3],k=m[b+4],l=m[b+5],p.set(j,k,l),j=m[b+6],k=m[b+7],l=m[b+8],q.set(j,k,l),r.subVectors(q,p),s.subVectors(o,p),r.cross(s),n[b]=r.x,n[b+1]=r.y,n[b+2]=r.z,n[b+3]=r.x,n[b+4]=r.y,n[b+5]=r.z,n[b+6]=r.x,n[b+7]=r.y,n[b+8]=r.z;this.normalizeNormals(),this.normalsNeedUpdate=!0}},normalizeNormals:function(){for(var a,b,c,d,e=this.attributes.normal.array,f=0,g=e.length;g>f;f+=3)a=e[f],b=e[f+1],c=e[f+2],d=1/Math.sqrt(a*a+b*b+c*c),e[f]*=d,e[f+1]*=d,e[f+2]*=d},computeTangents:function(){function b(a,b,c){n=e[3*a],o=e[3*a+1],p=e[3*a+2],q=e[3*b],r=e[3*b+1],s=e[3*b+2],t=e[3*c],u=e[3*c+1],v=e[3*c+2],w=g[2*a],x=g[2*a+1],y=g[2*b],z=g[2*b+1],A=g[2*c],B=g[2*c+1],C=q-n,D=t-n,E=r-o,F=u-o,G=s-p,H=v-p,I=y-w,J=A-w,K=z-x,L=B-x,M=1/(I*L-J*K),U.set((L*C-K*D)*M,(L*E-K*F)*M,(L*G-K*H)*M),V.set((I*D-J*C)*M,(I*F-J*E)*M,(I*H-J*G)*M),k[a].add(U),k[b].add(U),k[c].add(U),l[a].add(V),l[b].add(V),l[c].add(V)}function c(a){db.x=f[3*a],db.y=f[3*a+1],db.z=f[3*a+2],eb.copy(db),_=k[a],bb.copy(_),bb.sub(db.multiplyScalar(db.dot(_))).normalize(),cb.crossVectors(eb,_),ab=cb.dot(l[a]),$=0>ab?-1:1,j[4*a]=bb.x,j[4*a+1]=bb.y,j[4*a+2]=bb.z,j[4*a+3]=$}if(void 0===this.attributes.index||void 0===this.attributes.position||void 0===this.attributes.normal||void 0===this.attributes.uv)return void console.warn("Missing required attributes (index, position, normal or uv) in BufferGeometry.computeTangents()");var d=this.attributes.index.array,e=this.attributes.position.array,f=this.attributes.normal.array,g=this.attributes.uv.array,h=e.length/3;if(void 0===this.attributes.tangent){var i=4*h;this.attributes.tangent={itemSize:4,array:new Float32Array(i)}}for(var j=this.attributes.tangent.array,k=[],l=[],m=0;h>m;m++)k[m]=new a.Vector3,l[m]=new a.Vector3;var n,o,p,q,r,s,t,u,v,w,x,y,z,A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U=new a.Vector3,V=new a.Vector3,W=this.offsets;for(P=0,Q=W.length;Q>P;++P){var X=W[P].start,Y=W[P].count,Z=W[P].index;for(N=X,O=X+Y;O>N;N+=3)R=Z+d[N],S=Z+d[N+1],T=Z+d[N+2],b(R,S,T)}var $,_,ab,bb=new a.Vector3,cb=new a.Vector3,db=new a.Vector3,eb=new a.Vector3;for(P=0,Q=W.length;Q>P;++P){var X=W[P].start,Y=W[P].count,Z=W[P].index;for(N=X,O=X+Y;O>N;N+=3)R=Z+d[N],S=Z+d[N+1],T=Z+d[N+2],c(R),c(S),c(T)}},computeOffsets:function(a){var b=a;void 0===a&&(b=65535);for(var c=(Date.now(),this.attributes.index.array),d=this.attributes.position.array,e=(d.length/3,c.length/3),f=new Uint16Array(c.length),g=0,h=0,i=[{start:0,count:0,index:0}],j=i[0],k=0,l=0,m=new Int32Array(6),n=new Int32Array(d.length),o=new Int32Array(d.length),p=0;pq;q++){l=0;for(var r=0;3>r;r++){var s=c[3*q+r];-1==n[s]?(m[2*r]=s,m[2*r+1]=-1,l++):n[s]j.index+b){var u={start:g,count:0,index:h};i.push(u),j=u;for(var v=0;6>v;v+=2){var w=m[v+1];w>-1&&wv;v+=2){var s=m[v],w=m[v+1];-1===w&&(w=h++),n[s]=w,o[w]=s,f[g++]=w-j.index,j.count++}}return this.reorderBuffers(f,o,h),this.offsets=i,i},reorderBuffers:function(a,b,c){var d={},e=[Int8Array,Uint8Array,Uint8ClampedArray,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array];for(var f in this.attributes)if("index"!=f)for(var g=this.attributes[f].array,h=0,i=e.length;i>h;h++){var j=e[h];if(g instanceof j){d[f]=new j(this.attributes[f].itemSize*c);break}}for(var k=0;c>k;k++){var l=b[k];for(var f in this.attributes)if("index"!=f)for(var m=this.attributes[f].array,n=this.attributes[f].itemSize,o=d[f],p=0;n>p;p++)o[k*n+p]=m[l*n+p]}this.attributes.index.array=a;for(var f in this.attributes)"index"!=f&&(this.attributes[f].array=d[f],this.attributes[f].numItems=this.attributes[f].itemSize*c)},clone:function(){var b=new a.BufferGeometry,c=[Int8Array,Uint8Array,Uint8ClampedArray,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array];for(var d in this.attributes){for(var e=this.attributes[d],f=e.array,g={itemSize:e.itemSize,array:null},h=0,i=c.length;i>h;h++){var j=c[h];if(f instanceof j){g.array=new j(f);break}}b.attributes[d]=g}for(var h=0,i=this.offsets.length;i>h;h++){var k=this.offsets[h];b.offsets.push({start:k.start,index:k.index,count:k.count})}return b},dispose:function(){this.dispatchEvent({type:"dispose"})}},a.EventDispatcher.prototype.apply(a.BufferGeometry.prototype),a.Geometry=function(){this.id=a.GeometryIdCount++,this.uuid=a.Math.generateUUID(),this.name="",this.vertices=[],this.colors=[],this.faces=[],this.faceVertexUvs=[[]],this.morphTargets=[],this.morphColors=[],this.morphNormals=[],this.skinWeights=[],this.skinIndices=[],this.lineDistances=[],this.boundingBox=null,this.boundingSphere=null,this.hasTangents=!1,this.dynamic=!0,this.verticesNeedUpdate=!1,this.elementsNeedUpdate=!1,this.uvsNeedUpdate=!1,this.normalsNeedUpdate=!1,this.tangentsNeedUpdate=!1,this.colorsNeedUpdate=!1,this.lineDistancesNeedUpdate=!1,this.buffersNeedUpdate=!1},a.Geometry.prototype={constructor:a.Geometry,applyMatrix:function(b){for(var c=(new a.Matrix3).getNormalMatrix(b),d=0,e=this.vertices.length;e>d;d++){var f=this.vertices[d];f.applyMatrix4(b)}for(var d=0,e=this.faces.length;e>d;d++){var g=this.faces[d];g.normal.applyMatrix3(c).normalize();for(var h=0,i=g.vertexNormals.length;i>h;h++)g.vertexNormals[h].applyMatrix3(c).normalize();g.centroid.applyMatrix4(b)}this.boundingBox instanceof a.Box3&&this.computeBoundingBox(),this.boundingSphere instanceof a.Sphere&&this.computeBoundingSphere()},computeCentroids:function(){var a,b,c;for(a=0,b=this.faces.length;b>a;a++)c=this.faces[a],c.centroid.set(0,0,0),c.centroid.add(this.vertices[c.a]),c.centroid.add(this.vertices[c.b]),c.centroid.add(this.vertices[c.c]),c.centroid.divideScalar(3)},computeFaceNormals:function(){for(var b=new a.Vector3,c=new a.Vector3,d=0,e=this.faces.length;e>d;d++){var f=this.faces[d],g=this.vertices[f.a],h=this.vertices[f.b],i=this.vertices[f.c];b.subVectors(i,h),c.subVectors(g,h),b.cross(c),b.normalize(),f.normal.copy(b)}},computeVertexNormals:function(b){var c,d,e,f,g,h;for(h=new Array(this.vertices.length),c=0,d=this.vertices.length;d>c;c++)h[c]=new a.Vector3;if(b){{var i,j,k,l=new a.Vector3,m=new a.Vector3;new a.Vector3,new a.Vector3,new a.Vector3}for(e=0,f=this.faces.length;f>e;e++)g=this.faces[e],i=this.vertices[g.a],j=this.vertices[g.b],k=this.vertices[g.c],l.subVectors(k,j),m.subVectors(i,j),l.cross(m),h[g.a].add(l),h[g.b].add(l),h[g.c].add(l)}else for(e=0,f=this.faces.length;f>e;e++)g=this.faces[e],h[g.a].add(g.normal),h[g.b].add(g.normal),h[g.c].add(g.normal);for(c=0,d=this.vertices.length;d>c;c++)h[c].normalize();for(e=0,f=this.faces.length;f>e;e++)g=this.faces[e],g.vertexNormals[0]=h[g.a].clone(),g.vertexNormals[1]=h[g.b].clone(),g.vertexNormals[2]=h[g.c].clone()},computeMorphNormals:function(){var b,c,d,e,f;for(d=0,e=this.faces.length;e>d;d++)for(f=this.faces[d],f.__originalFaceNormal?f.__originalFaceNormal.copy(f.normal):f.__originalFaceNormal=f.normal.clone(),f.__originalVertexNormals||(f.__originalVertexNormals=[]),b=0,c=f.vertexNormals.length;c>b;b++)f.__originalVertexNormals[b]?f.__originalVertexNormals[b].copy(f.vertexNormals[b]):f.__originalVertexNormals[b]=f.vertexNormals[b].clone();var g=new a.Geometry;for(g.faces=this.faces,b=0,c=this.morphTargets.length;c>b;b++){if(!this.morphNormals[b]){this.morphNormals[b]={},this.morphNormals[b].faceNormals=[],this.morphNormals[b].vertexNormals=[];var h,i,j=this.morphNormals[b].faceNormals,k=this.morphNormals[b].vertexNormals;for(d=0,e=this.faces.length;e>d;d++)f=this.faces[d],h=new a.Vector3,i={a:new a.Vector3,b:new a.Vector3,c:new a.Vector3},j.push(h),k.push(i)}var l=this.morphNormals[b];g.vertices=this.morphTargets[b].vertices,g.computeFaceNormals(),g.computeVertexNormals();var h,i;for(d=0,e=this.faces.length;e>d;d++)f=this.faces[d],h=l.faceNormals[d],i=l.vertexNormals[d],h.copy(f.normal),i.a.copy(f.vertexNormals[0]),i.b.copy(f.vertexNormals[1]),i.c.copy(f.vertexNormals[2])}for(d=0,e=this.faces.length;e>d;d++)f=this.faces[d],f.normal=f.__originalFaceNormal,f.vertexNormals=f.__originalVertexNormals},computeTangents:function(){function b(a,b,c,d,e,f,g){k=a.vertices[b],l=a.vertices[c],m=a.vertices[d],n=j[e],o=j[f],p=j[g],q=l.x-k.x,r=m.x-k.x,s=l.y-k.y,t=m.y-k.y,u=l.z-k.z,v=m.z-k.z,w=o.x-n.x,x=p.x-n.x,y=o.y-n.y,z=p.y-n.y,A=1/(w*z-x*y),G.set((z*q-y*r)*A,(z*s-y*t)*A,(z*u-y*v)*A),H.set((w*r-x*q)*A,(w*t-x*s)*A,(w*v-x*u)*A),E[b].add(G),E[c].add(G),E[d].add(G),F[b].add(H),F[c].add(H),F[d].add(H)}var c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,A,B,C,D,E=[],F=[],G=new a.Vector3,H=new a.Vector3,I=new a.Vector3,J=new a.Vector3,K=new a.Vector3;for(e=0,f=this.vertices.length;f>e;e++)E[e]=new a.Vector3,F[e]=new a.Vector3;for(c=0,d=this.faces.length;d>c;c++)i=this.faces[c],j=this.faceVertexUvs[0][c],b(this,i.a,i.b,i.c,0,1,2);var L=["a","b","c","d"];for(c=0,d=this.faces.length;d>c;c++)for(i=this.faces[c],g=0;gC?-1:1,i.vertexTangents[g]=new a.Vector4(I.x,I.y,I.z,D);this.hasTangents=!0},computeLineDistances:function(){for(var a=0,b=this.vertices,c=0,d=b.length;d>c;c++)c>0&&(a+=b[c].distanceTo(b[c-1])),this.lineDistances[c]=a},computeBoundingBox:function(){null===this.boundingBox&&(this.boundingBox=new a.Box3),this.boundingBox.setFromPoints(this.vertices)},computeBoundingSphere:function(){null===this.boundingSphere&&(this.boundingSphere=new a.Sphere),this.boundingSphere.setFromPoints(this.vertices)},mergeVertices:function(){var a,b,c,d,e,f,g,h,i={},j=[],k=[],l=4,m=Math.pow(10,l);for(c=0,d=this.vertices.length;d>c;c++)a=this.vertices[c],b=Math.round(a.x*m)+"_"+Math.round(a.y*m)+"_"+Math.round(a.z*m),void 0===i[b]?(i[b]=c,j.push(this.vertices[c]),k[c]=j.length-1):k[c]=k[i[b]];var n=[];for(c=0,d=this.faces.length;d>c;c++){e=this.faces[c],e.a=k[e.a],e.b=k[e.b],e.c=k[e.c],f=[e.a,e.b,e.c];for(var o=-1,p=0;3>p;p++)if(f[p]==f[(p+1)%3]){o=p,n.push(c);break}}for(c=n.length-1;c>=0;c--){var q=n[c];for(this.faces.splice(q,1),g=0,h=this.faceVertexUvs.length;h>g;g++)this.faceVertexUvs[g].splice(q,1)}var r=this.vertices.length-j.length;return this.vertices=j,r},makeGroups:function(){var a=0;return function(b){var c,d,e,f,g,h={},i=this.morphTargets.length,j=this.morphNormals.length;for(this.geometryGroups={},c=0,d=this.faces.length;d>c;c++)e=this.faces[c],f=b?e.materialIndex:0,f in h||(h[f]={hash:f,counter:0}),g=h[f].hash+"_"+h[f].counter,g in this.geometryGroups||(this.geometryGroups[g]={faces3:[],materialIndex:f,vertices:0,numMorphTargets:i,numMorphNormals:j}),this.geometryGroups[g].vertices+3>65535&&(h[f].counter+=1,g=h[f].hash+"_"+h[f].counter,g in this.geometryGroups||(this.geometryGroups[g]={faces3:[],materialIndex:f,vertices:0,numMorphTargets:i,numMorphNormals:j})),this.geometryGroups[g].faces3.push(c),this.geometryGroups[g].vertices+=3;this.geometryGroupsList=[];for(var k in this.geometryGroups)this.geometryGroups[k].id=a++,this.geometryGroupsList.push(this.geometryGroups[k])}}(),clone:function(){for(var b=new a.Geometry,c=this.vertices,d=0,e=c.length;e>d;d++)b.vertices.push(c[d].clone());for(var f=this.faces,d=0,e=f.length;e>d;d++)b.faces.push(f[d].clone());for(var g=this.faceVertexUvs[0],d=0,e=g.length;e>d;d++){for(var h=g[d],i=[],j=0,k=h.length;k>j;j++)i.push(new a.Vector2(h[j].x,h[j].y));b.faceVertexUvs[0].push(i)}return b},dispose:function(){this.dispatchEvent({type:"dispose"})}},a.EventDispatcher.prototype.apply(a.Geometry.prototype),a.GeometryIdCount=0,a.Geometry2=function(b){a.BufferGeometry.call(this),this.vertices=this.addAttribute("position",Float32Array,b,3).array,this.normals=this.addAttribute("normal",Float32Array,b,3).array,this.uvs=this.addAttribute("uv",Float32Array,b,2).array,this.boundingBox=null,this.boundingSphere=null},a.Geometry2.prototype=Object.create(a.BufferGeometry.prototype),a.Camera=function(){a.Object3D.call(this),this.matrixWorldInverse=new a.Matrix4,this.projectionMatrix=new a.Matrix4},a.Camera.prototype=Object.create(a.Object3D.prototype),a.Camera.prototype.lookAt=function(){var b=new a.Matrix4;return function(a){b.lookAt(this.position,a,this.up),this.quaternion.setFromRotationMatrix(b)}}(),a.Camera.prototype.clone=function(b){return void 0===b&&(b=new a.Camera),a.Object3D.prototype.clone.call(this,b),b.matrixWorldInverse.copy(this.matrixWorldInverse),b.projectionMatrix.copy(this.projectionMatrix),b},a.OrthographicCamera=function(b,c,d,e,f,g){a.Camera.call(this),this.left=b,this.right=c,this.top=d,this.bottom=e,this.near=void 0!==f?f:.1,this.far=void 0!==g?g:2e3,this.updateProjectionMatrix()},a.OrthographicCamera.prototype=Object.create(a.Camera.prototype),a.OrthographicCamera.prototype.updateProjectionMatrix=function(){this.projectionMatrix.makeOrthographic(this.left,this.right,this.top,this.bottom,this.near,this.far)},a.OrthographicCamera.prototype.clone=function(){var b=new a.OrthographicCamera;return a.Camera.prototype.clone.call(this,b),b.left=this.left,b.right=this.right,b.top=this.top,b.bottom=this.bottom,b.near=this.near,b.far=this.far,b},a.PerspectiveCamera=function(b,c,d,e){a.Camera.call(this),this.fov=void 0!==b?b:50,this.aspect=void 0!==c?c:1,this.near=void 0!==d?d:.1,this.far=void 0!==e?e:2e3,this.updateProjectionMatrix()},a.PerspectiveCamera.prototype=Object.create(a.Camera.prototype),a.PerspectiveCamera.prototype.setLens=function(b,c){void 0===c&&(c=24),this.fov=2*a.Math.radToDeg(Math.atan(c/(2*b))),this.updateProjectionMatrix()},a.PerspectiveCamera.prototype.setViewOffset=function(a,b,c,d,e,f){this.fullWidth=a,this.fullHeight=b,this.x=c,this.y=d,this.width=e,this.height=f,this.updateProjectionMatrix()},a.PerspectiveCamera.prototype.updateProjectionMatrix=function(){if(this.fullWidth){var b=this.fullWidth/this.fullHeight,c=Math.tan(a.Math.degToRad(.5*this.fov))*this.near,d=-c,e=b*d,f=b*c,g=Math.abs(f-e),h=Math.abs(c-d);this.projectionMatrix.makeFrustum(e+this.x*g/this.fullWidth,e+(this.x+this.width)*g/this.fullWidth,c-(this.y+this.height)*h/this.fullHeight,c-this.y*h/this.fullHeight,this.near,this.far)}else this.projectionMatrix.makePerspective(this.fov,this.aspect,this.near,this.far)},a.PerspectiveCamera.prototype.clone=function(){var b=new a.PerspectiveCamera;return a.Camera.prototype.clone.call(this,b),b.fov=this.fov,b.aspect=this.aspect,b.near=this.near,b.far=this.far,b},a.Light=function(b){a.Object3D.call(this),this.color=new a.Color(b)},a.Light.prototype=Object.create(a.Object3D.prototype),a.Light.prototype.clone=function(b){return void 0===b&&(b=new a.Light),a.Object3D.prototype.clone.call(this,b),b.color.copy(this.color),b},a.AmbientLight=function(b){a.Light.call(this,b)},a.AmbientLight.prototype=Object.create(a.Light.prototype),a.AmbientLight.prototype.clone=function(){var b=new a.AmbientLight;return a.Light.prototype.clone.call(this,b),b},a.AreaLight=function(b,c){a.Light.call(this,b),this.normal=new a.Vector3(0,-1,0),this.right=new a.Vector3(1,0,0),this.intensity=void 0!==c?c:1,this.width=1,this.height=1,this.constantAttenuation=1.5,this.linearAttenuation=.5,this.quadraticAttenuation=.1},a.AreaLight.prototype=Object.create(a.Light.prototype),a.DirectionalLight=function(b,c){a.Light.call(this,b),this.position.set(0,1,0),this.target=new a.Object3D,this.intensity=void 0!==c?c:1,this.castShadow=!1,this.onlyShadow=!1,this.shadowCameraNear=50,this.shadowCameraFar=5e3,this.shadowCameraLeft=-500,this.shadowCameraRight=500,this.shadowCameraTop=500,this.shadowCameraBottom=-500,this.shadowCameraVisible=!1,this.shadowBias=0,this.shadowDarkness=.5,this.shadowMapWidth=512,this.shadowMapHeight=512,this.shadowCascade=!1,this.shadowCascadeOffset=new a.Vector3(0,0,-1e3),this.shadowCascadeCount=2,this.shadowCascadeBias=[0,0,0],this.shadowCascadeWidth=[512,512,512],this.shadowCascadeHeight=[512,512,512],this.shadowCascadeNearZ=[-1,.99,.998],this.shadowCascadeFarZ=[.99,.998,1],this.shadowCascadeArray=[],this.shadowMap=null,this.shadowMapSize=null,this.shadowCamera=null,this.shadowMatrix=null},a.DirectionalLight.prototype=Object.create(a.Light.prototype),a.DirectionalLight.prototype.clone=function(){var b=new a.DirectionalLight;return a.Light.prototype.clone.call(this,b),b.target=this.target.clone(),b.intensity=this.intensity,b.castShadow=this.castShadow,b.onlyShadow=this.onlyShadow,b},a.HemisphereLight=function(b,c,d){a.Light.call(this,b),this.position.set(0,100,0),this.groundColor=new a.Color(c),this.intensity=void 0!==d?d:1},a.HemisphereLight.prototype=Object.create(a.Light.prototype),a.HemisphereLight.prototype.clone=function(){var b=new a.HemisphereLight;return a.Light.prototype.clone.call(this,b),b.groundColor.copy(this.groundColor),b.intensity=this.intensity,b},a.PointLight=function(b,c,d){a.Light.call(this,b),this.intensity=void 0!==c?c:1,this.distance=void 0!==d?d:0},a.PointLight.prototype=Object.create(a.Light.prototype),a.PointLight.prototype.clone=function(){var b=new a.PointLight;return a.Light.prototype.clone.call(this,b),b.intensity=this.intensity,b.distance=this.distance,b},a.SpotLight=function(b,c,d,e,f){a.Light.call(this,b),this.position.set(0,1,0),this.target=new a.Object3D,this.intensity=void 0!==c?c:1,this.distance=void 0!==d?d:0,this.angle=void 0!==e?e:Math.PI/3,this.exponent=void 0!==f?f:10,this.castShadow=!1,this.onlyShadow=!1,this.shadowCameraNear=50,this.shadowCameraFar=5e3,this.shadowCameraFov=50,this.shadowCameraVisible=!1,this.shadowBias=0,this.shadowDarkness=.5,this.shadowMapWidth=512,this.shadowMapHeight=512,this.shadowMap=null,this.shadowMapSize=null,this.shadowCamera=null,this.shadowMatrix=null},a.SpotLight.prototype=Object.create(a.Light.prototype),a.SpotLight.prototype.clone=function(){var b=new a.SpotLight;return a.Light.prototype.clone.call(this,b),b.target=this.target.clone(),b.intensity=this.intensity,b.distance=this.distance,b.angle=this.angle,b.exponent=this.exponent,b.castShadow=this.castShadow,b.onlyShadow=this.onlyShadow,b},a.Loader=function(b){this.showStatus=b,this.statusDomElement=b?a.Loader.prototype.addStatusElement():null,this.onLoadStart=function(){},this.onLoadProgress=function(){},this.onLoadComplete=function(){}},a.Loader.prototype={constructor:a.Loader,crossOrigin:void 0,addStatusElement:function(){var a=document.createElement("div");return a.style.position="absolute",a.style.right="0px",a.style.top="0px",a.style.fontSize="0.8em",a.style.textAlign="left",a.style.background="rgba(0,0,0,0.25)",a.style.color="#fff",a.style.width="120px",a.style.padding="0.5em 0.5em 0.5em 0.5em",a.style.zIndex=1e3,a.innerHTML="Loading ...",a},updateProgress:function(a){var b="Loaded ";b+=a.total?(100*a.loaded/a.total).toFixed(0)+"%":(a.loaded/1e3).toFixed(2)+" KB",this.statusDomElement.innerHTML=b},extractUrlBase:function(a){var b=a.split("/");return 1===b.length?"./":(b.pop(),b.join("/")+"/")},initMaterials:function(b,c){for(var d=[],e=0;ec;c++){var e=b[c];if(e instanceof a.ShaderMaterial)return!0}return!1},createMaterial:function(b,c){function d(a){var b=Math.log(a)/Math.LN2;return Math.floor(b)==b}function e(a){var b=Math.log(a)/Math.LN2;return Math.pow(2,Math.round(b))}function f(a,b){var c=new Image;c.onload=function(){if(d(this.width)&&d(this.height))a.image=this;else{var b=e(this.width),c=e(this.height);a.image.width=b,a.image.height=c,a.image.getContext("2d").drawImage(this,0,0,b,c)}a.needsUpdate=!0},void 0!==i.crossOrigin&&(c.crossOrigin=i.crossOrigin),c.src=b}function g(b,d,e,g,h,i,j){var k=/\.dds$/i.test(e),l=c+e;if(k){var m=a.ImageUtils.loadCompressedTexture(l);b[d]=m}else{var m=document.createElement("canvas");b[d]=new a.Texture(m)}if(b[d].sourceFile=e,g&&(b[d].repeat.set(g[0],g[1]),1!==g[0]&&(b[d].wrapS=a.RepeatWrapping),1!==g[1]&&(b[d].wrapT=a.RepeatWrapping)),h&&b[d].offset.set(h[0],h[1]),i){var n={repeat:a.RepeatWrapping,mirror:a.MirroredRepeatWrapping};void 0!==n[i[0]]&&(b[d].wrapS=n[i[0]]),void 0!==n[i[1]]&&(b[d].wrapT=n[i[1]])}j&&(b[d].anisotropy=j),k||f(b[d],l)}function h(a){return(255*a[0]<<16)+(255*a[1]<<8)+255*a[2]}var i=this,j="MeshLambertMaterial",k={color:15658734,opacity:1,map:null,lightMap:null,normalMap:null,bumpMap:null,wireframe:!1};if(b.shading){var l=b.shading.toLowerCase();"phong"===l?j="MeshPhongMaterial":"basic"===l&&(j="MeshBasicMaterial")}if(void 0!==b.blending&&void 0!==a[b.blending]&&(k.blending=a[b.blending]),(void 0!==b.transparent||b.opacity<1)&&(k.transparent=b.transparent),void 0!==b.depthTest&&(k.depthTest=b.depthTest),void 0!==b.depthWrite&&(k.depthWrite=b.depthWrite),void 0!==b.visible&&(k.visible=b.visible),void 0!==b.flipSided&&(k.side=a.BackSide),void 0!==b.doubleSided&&(k.side=a.DoubleSide),void 0!==b.wireframe&&(k.wireframe=b.wireframe),void 0!==b.vertexColors&&("face"===b.vertexColors?k.vertexColors=a.FaceColors:b.vertexColors&&(k.vertexColors=a.VertexColors)),b.colorDiffuse?k.color=h(b.colorDiffuse):b.DbgColor&&(k.color=b.DbgColor),b.colorSpecular&&(k.specular=h(b.colorSpecular)),b.colorAmbient&&(k.ambient=h(b.colorAmbient)),b.transparency&&(k.opacity=b.transparency),b.specularCoef&&(k.shininess=b.specularCoef),b.mapDiffuse&&c&&g(k,"map",b.mapDiffuse,b.mapDiffuseRepeat,b.mapDiffuseOffset,b.mapDiffuseWrap,b.mapDiffuseAnisotropy),b.mapLight&&c&&g(k,"lightMap",b.mapLight,b.mapLightRepeat,b.mapLightOffset,b.mapLightWrap,b.mapLightAnisotropy),b.mapBump&&c&&g(k,"bumpMap",b.mapBump,b.mapBumpRepeat,b.mapBumpOffset,b.mapBumpWrap,b.mapBumpAnisotropy),b.mapNormal&&c&&g(k,"normalMap",b.mapNormal,b.mapNormalRepeat,b.mapNormalOffset,b.mapNormalWrap,b.mapNormalAnisotropy),b.mapSpecular&&c&&g(k,"specularMap",b.mapSpecular,b.mapSpecularRepeat,b.mapSpecularOffset,b.mapSpecularWrap,b.mapSpecularAnisotropy),b.mapBumpScale&&(k.bumpScale=b.mapBumpScale),b.mapNormal){var m=a.ShaderLib.normalmap,n=a.UniformsUtils.clone(m.uniforms);n.tNormal.value=k.normalMap,b.mapNormalFactor&&n.uNormalScale.value.set(b.mapNormalFactor,b.mapNormalFactor),k.map&&(n.tDiffuse.value=k.map,n.enableDiffuse.value=!0),k.specularMap&&(n.tSpecular.value=k.specularMap,n.enableSpecular.value=!0),k.lightMap&&(n.tAO.value=k.lightMap,n.enableAO.value=!0),n.diffuse.value.setHex(k.color),n.specular.value.setHex(k.specular),n.ambient.value.setHex(k.ambient),n.shininess.value=k.shininess,void 0!==k.opacity&&(n.opacity.value=k.opacity);var o={fragmentShader:m.fragmentShader,vertexShader:m.vertexShader,uniforms:n,lights:!0,fog:!0},p=new a.ShaderMaterial(o);k.transparent&&(p.transparent=!0)}else var p=new a[j](k);return void 0!==b.DbgName&&(p.name=b.DbgName),p}},a.XHRLoader=function(b){this.manager=void 0!==b?b:a.DefaultLoadingManager},a.XHRLoader.prototype={constructor:a.XHRLoader,load:function(a,b,c,d){var e=this,f=new XMLHttpRequest;void 0!==b&&f.addEventListener("load",function(c){b(c.target.responseText),e.manager.itemEnd(a) +},!1),void 0!==c&&f.addEventListener("progress",function(a){c(a)},!1),void 0!==d&&f.addEventListener("error",function(a){d(a)},!1),void 0!==this.crossOrigin&&(f.crossOrigin=this.crossOrigin),f.open("GET",a,!0),f.send(null),e.manager.itemStart(a)},setCrossOrigin:function(a){this.crossOrigin=a}},a.ImageLoader=function(b){this.manager=void 0!==b?b:a.DefaultLoadingManager},a.ImageLoader.prototype={constructor:a.ImageLoader,load:function(a,b,c,d){var e=this,f=document.createElement("img");return void 0!==b&&f.addEventListener("load",function(){e.manager.itemEnd(a),b(this)},!1),void 0!==c&&f.addEventListener("progress",function(a){c(a)},!1),void 0!==d&&f.addEventListener("error",function(a){d(a)},!1),void 0!==this.crossOrigin&&(f.crossOrigin=this.crossOrigin),f.src=a,e.manager.itemStart(a),f},setCrossOrigin:function(a){this.crossOrigin=a}},a.JSONLoader=function(b){a.Loader.call(this,b),this.withCredentials=!1},a.JSONLoader.prototype=Object.create(a.Loader.prototype),a.JSONLoader.prototype.load=function(a,b,c){c=c&&"string"==typeof c?c:this.extractUrlBase(a),this.onLoadStart(),this.loadAjaxJSON(this,a,b,c)},a.JSONLoader.prototype.loadAjaxJSON=function(a,b,c,d,e){var f=new XMLHttpRequest,g=0;f.onreadystatechange=function(){if(f.readyState===f.DONE)if(200===f.status||0===f.status){if(f.responseText){var h=JSON.parse(f.responseText);if("scene"===h.metadata.type)return void console.error('THREE.JSONLoader: "'+b+'" seems to be a Scene. Use THREE.SceneLoader instead.');var i=a.parse(h,d);c(i.geometry,i.materials)}else console.error('THREE.JSONLoader: "'+b+'" seems to be unreachable or the file is empty.');a.onLoadComplete()}else console.error("THREE.JSONLoader: Couldn't load \""+b+'" ('+f.status+")");else f.readyState===f.LOADING?e&&(0===g&&(g=f.getResponseHeader("Content-Length")),e({total:g,loaded:f.responseText.length})):f.readyState===f.HEADERS_RECEIVED&&void 0!==e&&(g=f.getResponseHeader("Content-Length"))},f.open("GET",b,!0),f.withCredentials=this.withCredentials,f.send(null)},a.JSONLoader.prototype.parse=function(b,c){function d(c){function d(a,b){return a&1<e;e++)g.faceVertexUvs[e]=[]}for(i=0,j=H.length;j>i;)w=new a.Vector3,w.x=H[i++]*c,w.y=H[i++]*c,w.z=H[i++]*c,g.vertices.push(w);for(i=0,j=G.length;j>i;)if(o=G[i++],p=d(o,0),q=d(o,1),r=d(o,3),s=d(o,4),t=d(o,5),u=d(o,6),v=d(o,7),p){if(y=new a.Face3,y.a=G[i],y.b=G[i+1],y.c=G[i+3],z=new a.Face3,z.a=G[i+1],z.b=G[i+2],z.c=G[i+3],i+=4,q&&(n=G[i++],y.materialIndex=n,z.materialIndex=n),h=g.faces.length,r)for(e=0;K>e;e++)for(C=b.uvs[e],g.faceVertexUvs[e][h]=[],g.faceVertexUvs[e][h+1]=[],f=0;4>f;f++)m=G[i++],E=C[2*m],F=C[2*m+1],D=new a.Vector2(E,F),2!==f&&g.faceVertexUvs[e][h].push(D),0!==f&&g.faceVertexUvs[e][h+1].push(D);if(s&&(l=3*G[i++],y.normal.set(I[l++],I[l++],I[l]),z.normal.copy(y.normal)),t)for(e=0;4>e;e++)l=3*G[i++],B=new a.Vector3(I[l++],I[l++],I[l]),2!==e&&y.vertexNormals.push(B),0!==e&&z.vertexNormals.push(B);if(u&&(k=G[i++],A=J[k],y.color.setHex(A),z.color.setHex(A)),v)for(e=0;4>e;e++)k=G[i++],A=J[k],2!==e&&y.vertexColors.push(new a.Color(A)),0!==e&&z.vertexColors.push(new a.Color(A));g.faces.push(y),g.faces.push(z)}else{if(x=new a.Face3,x.a=G[i++],x.b=G[i++],x.c=G[i++],q&&(n=G[i++],x.materialIndex=n),h=g.faces.length,r)for(e=0;K>e;e++)for(C=b.uvs[e],g.faceVertexUvs[e][h]=[],f=0;3>f;f++)m=G[i++],E=C[2*m],F=C[2*m+1],D=new a.Vector2(E,F),g.faceVertexUvs[e][h].push(D);if(s&&(l=3*G[i++],x.normal.set(I[l++],I[l++],I[l])),t)for(e=0;3>e;e++)l=3*G[i++],B=new a.Vector3(I[l++],I[l++],I[l]),x.vertexNormals.push(B);if(u&&(k=G[i++],x.color.setHex(J[k])),v)for(e=0;3>e;e++)k=G[i++],x.vertexColors.push(new a.Color(J[k]));g.faces.push(x)}}function e(){if(b.skinWeights)for(var c=0,d=b.skinWeights.length;d>c;c+=2){var e=b.skinWeights[c],f=b.skinWeights[c+1],h=0,i=0;g.skinWeights.push(new a.Vector4(e,f,h,i))}if(b.skinIndices)for(var c=0,d=b.skinIndices.length;d>c;c+=2){var j=b.skinIndices[c],k=b.skinIndices[c+1],l=0,m=0;g.skinIndices.push(new a.Vector4(j,k,l,m))}g.bones=b.bones,g.bones&&g.bones.length>0&&(g.skinWeights.length!==g.skinIndices.length||g.skinIndices.length!==g.vertices.length)&&console.warn("When skinning, number of vertices ("+g.vertices.length+"), skinIndices ("+g.skinIndices.length+"), and skinWeights ("+g.skinWeights.length+") should match."),g.animation=b.animation,g.animations=b.animations}function f(c){if(void 0!==b.morphTargets){var d,e,f,h,i,j;for(d=0,e=b.morphTargets.length;e>d;d++)for(g.morphTargets[d]={},g.morphTargets[d].name=b.morphTargets[d].name,g.morphTargets[d].vertices=[],i=g.morphTargets[d].vertices,j=b.morphTargets[d].vertices,f=0,h=j.length;h>f;f+=3){var k=new a.Vector3;k.x=j[f]*c,k.y=j[f+1]*c,k.z=j[f+2]*c,i.push(k)}}if(void 0!==b.morphColors){var d,e,l,m,n,o,p;for(d=0,e=b.morphColors.length;e>d;d++)for(g.morphColors[d]={},g.morphColors[d].name=b.morphColors[d].name,g.morphColors[d].colors=[],n=g.morphColors[d].colors,o=b.morphColors[d].colors,l=0,m=o.length;m>l;l+=3)p=new a.Color(16755200),p.setRGB(o[l],o[l+1],o[l+2]),n.push(p)}}var g=new a.Geometry,h=void 0!==b.scale?1/b.scale:1;if(d(h),e(),f(h),g.computeCentroids(),g.computeFaceNormals(),g.computeBoundingSphere(),void 0===b.materials)return{geometry:g};var i=this.initMaterials(b.materials,c);return this.needsTangents(i)&&g.computeTangents(),{geometry:g,materials:i}},a.LoadingManager=function(a,b,c){var d=this,e=0,f=0;this.onLoad=a,this.onProgress=b,this.onError=c,this.itemStart=function(){f++},this.itemEnd=function(a){e++,void 0!==d.onProgress&&d.onProgress(a,e,f),e===f&&void 0!==d.onLoad&&d.onLoad()}},a.DefaultLoadingManager=new a.LoadingManager,a.BufferGeometryLoader=function(b){this.manager=void 0!==b?b:a.DefaultLoadingManager},a.BufferGeometryLoader.prototype={constructor:a.BufferGeometryLoader,load:function(b,c){var d=this,e=new a.XHRLoader;e.setCrossOrigin(this.crossOrigin),e.load(b,function(a){c(d.parse(JSON.parse(a)))})},setCrossOrigin:function(a){this.crossOrigin=a},parse:function(b){var c=new a.BufferGeometry,d=b.attributes,e=b.offsets,f=b.boundingSphere;for(var g in d){var h=d[g];c.attributes[g]={itemSize:h.itemSize,array:new self[h.type](h.array)}}return void 0!==e&&(c.offsets=JSON.parse(JSON.stringify(e))),void 0!==f&&(c.boundingSphere=new a.Sphere((new a.Vector3).fromArray(void 0!==f.center?f.center:[0,0,0]),f.radius)),c}},a.Geometry2Loader=function(b){this.manager=void 0!==b?b:a.DefaultLoadingManager},a.Geometry2Loader.prototype={constructor:a.Geometry2Loader,load:function(b,c){var d=this,e=new a.XHRLoader;e.setCrossOrigin(this.crossOrigin),e.load(b,function(a){c(d.parse(JSON.parse(a)))})},setCrossOrigin:function(a){this.crossOrigin=a},parse:function(b){var c=new a.Geometry2(b.vertices.length/3),d=["vertices","normals","uvs"],e=b.boundingSphere;for(var f in d){var g=d[f];c[g].set(b[g])}return void 0!==e&&(c.boundingSphere=new a.Sphere((new a.Vector3).fromArray(void 0!==e.center?e.center:[0,0,0]),e.radius)),c}},a.MaterialLoader=function(b){this.manager=void 0!==b?b:a.DefaultLoadingManager},a.MaterialLoader.prototype={constructor:a.MaterialLoader,load:function(b,c){var d=this,e=new a.XHRLoader;e.setCrossOrigin(this.crossOrigin),e.load(b,function(a){c(d.parse(JSON.parse(a)))})},setCrossOrigin:function(a){this.crossOrigin=a},parse:function(b){var c=new a[b.type];if(void 0!==b.color&&c.color.setHex(b.color),void 0!==b.ambient&&c.ambient.setHex(b.ambient),void 0!==b.emissive&&c.emissive.setHex(b.emissive),void 0!==b.specular&&c.specular.setHex(b.specular),void 0!==b.shininess&&(c.shininess=b.shininess),void 0!==b.vertexColors&&(c.vertexColors=b.vertexColors),void 0!==b.blending&&(c.blending=b.blending),void 0!==b.side&&(c.side=b.side),void 0!==b.opacity&&(c.opacity=b.opacity),void 0!==b.transparent&&(c.transparent=b.transparent),void 0!==b.wireframe&&(c.wireframe=b.wireframe),void 0!==b.materials)for(var d=0,e=b.materials.length;e>d;d++)c.materials.push(this.parse(b.materials[d]));return c}},a.ObjectLoader=function(b){this.manager=void 0!==b?b:a.DefaultLoadingManager},a.ObjectLoader.prototype={constructor:a.ObjectLoader,load:function(b,c){var d=this,e=new a.XHRLoader(d.manager);e.setCrossOrigin(this.crossOrigin),e.load(b,function(a){c(d.parse(JSON.parse(a)))})},setCrossOrigin:function(a){this.crossOrigin=a},parse:function(a){var b=this.parseGeometries(a.geometries),c=this.parseMaterials(a.materials),d=this.parseObject(a.object,b,c);return d},parseGeometries:function(b){var c={};if(void 0!==b)for(var d=new a.JSONLoader,e=new a.Geometry2Loader,f=new a.BufferGeometryLoader,g=0,h=b.length;h>g;g++){var i,j=b[g];switch(j.type){case"PlaneGeometry":i=new a.PlaneGeometry(j.width,j.height,j.widthSegments,j.heightSegments);break;case"BoxGeometry":case"CubeGeometry":i=new a.BoxGeometry(j.width,j.height,j.depth,j.widthSegments,j.heightSegments,j.depthSegments);break;case"CircleGeometry":i=new a.CircleGeometry(j.radius,j.segments);break;case"CylinderGeometry":i=new a.CylinderGeometry(j.radiusTop,j.radiusBottom,j.height,j.radialSegments,j.heightSegments,j.openEnded);break;case"SphereGeometry":i=new a.SphereGeometry(j.radius,j.widthSegments,j.heightSegments,j.phiStart,j.phiLength,j.thetaStart,j.thetaLength);break;case"IcosahedronGeometry":i=new a.IcosahedronGeometry(j.radius,j.detail);break;case"TorusGeometry":i=new a.TorusGeometry(j.radius,j.tube,j.radialSegments,j.tubularSegments,j.arc);break;case"TorusKnotGeometry":i=new a.TorusKnotGeometry(j.radius,j.tube,j.radialSegments,j.tubularSegments,j.p,j.q,j.heightScale);break;case"BufferGeometry":i=f.parse(j.data);break;case"Geometry2":i=e.parse(j.data);break;case"Geometry":i=d.parse(j.data).geometry}i.uuid=j.uuid,void 0!==j.name&&(i.name=j.name),c[j.uuid]=i}return c},parseMaterials:function(b){var c={};if(void 0!==b)for(var d=new a.MaterialLoader,e=0,f=b.length;f>e;e++){var g=b[e],h=d.parse(g);h.uuid=g.uuid,void 0!==g.name&&(h.name=g.name),c[g.uuid]=h}return c},parseObject:function(){var b=new a.Matrix4;return function(c,d,e){var f;switch(c.type){case"Scene":f=new a.Scene;break;case"PerspectiveCamera":f=new a.PerspectiveCamera(c.fov,c.aspect,c.near,c.far);break;case"OrthographicCamera":f=new a.OrthographicCamera(c.left,c.right,c.top,c.bottom,c.near,c.far);break;case"AmbientLight":f=new a.AmbientLight(c.color);break;case"DirectionalLight":f=new a.DirectionalLight(c.color,c.intensity);break;case"PointLight":f=new a.PointLight(c.color,c.intensity,c.distance);break;case"SpotLight":f=new a.SpotLight(c.color,c.intensity,c.distance,c.angle,c.exponent);break;case"HemisphereLight":f=new a.HemisphereLight(c.color,c.groundColor,c.intensity);break;case"Mesh":var g=d[c.geometry],h=e[c.material];void 0===g&&console.error("THREE.ObjectLoader: Undefined geometry "+c.geometry),void 0===h&&console.error("THREE.ObjectLoader: Undefined material "+c.material),f=new a.Mesh(g,h);break;case"Sprite":var h=e[c.material];void 0===h&&console.error("THREE.ObjectLoader: Undefined material "+c.material),f=new a.Sprite(h);break;default:f=new a.Object3D}if(f.uuid=c.uuid,void 0!==c.name&&(f.name=c.name),void 0!==c.matrix?(b.fromArray(c.matrix),b.decompose(f.position,f.quaternion,f.scale)):(void 0!==c.position&&f.position.fromArray(c.position),void 0!==c.rotation&&f.rotation.fromArray(c.rotation),void 0!==c.scale&&f.scale.fromArray(c.scale)),void 0!==c.visible&&(f.visible=c.visible),void 0!==c.userData&&(f.userData=c.userData),void 0!==c.children)for(var i in c.children)f.add(this.parseObject(c.children[i],d,e));return f}}()},a.SceneLoader=function(){this.onLoadStart=function(){},this.onLoadProgress=function(){},this.onLoadComplete=function(){},this.callbackSync=function(){},this.callbackProgress=function(){},this.geometryHandlers={},this.hierarchyHandlers={},this.addGeometryHandler("ascii",a.JSONLoader)},a.SceneLoader.prototype={constructor:a.SceneLoader,load:function(b,c){var d=this,e=new a.XHRLoader(d.manager);e.setCrossOrigin(this.crossOrigin),e.load(b,function(a){d.parse(JSON.parse(a),c,b)})},setCrossOrigin:function(a){this.crossOrigin=a},addGeometryHandler:function(a,b){this.geometryHandlers[a]={loaderClass:b}},addHierarchyHandler:function(a,b){this.hierarchyHandlers[a]={loaderClass:b}},parse:function(b,c,d){function e(a,b){return"relativeToHTML"==b?a:C+a}function f(){g(A.scene,E.objects)}function g(b,c){var d,f,h,i,j;for(var l in c){var m=A.objects[l],n=c[l];if(void 0===m){if(n.type&&n.type in B.hierarchyHandlers){if(void 0===n.loading){var o={type:1,url:1,material:1,position:1,rotation:1,scale:1,visible:1,children:1,userData:1,skin:1,morph:1,mirroredLoop:1,duration:1},s={};for(var t in n)t in o||(s[t]=n[t]);q=A.materials[n.material],n.loading=!0;var u=B.hierarchyHandlers[n.type].loaderObject;u.options?u.load(e(n.url,E.urlBaseType),k(l,b,q,n)):u.load(e(n.url,E.urlBaseType),k(l,b,q,n),s)}}else if(void 0!==n.geometry){if(p=A.geometries[n.geometry]){var w=!1;if(q=A.materials[n.material],w=q instanceof a.ShaderMaterial,f=n.position,h=n.rotation,i=n.scale,d=n.matrix,j=n.quaternion,n.material||(q=new a.MeshFaceMaterial(A.face_materials[n.geometry])),q instanceof a.MeshFaceMaterial&&0===q.materials.length&&(q=new a.MeshFaceMaterial(A.face_materials[n.geometry])),q instanceof a.MeshFaceMaterial)for(var x=0;xbb;bb++)ab[bb]=e(Z.url[bb],E.urlBaseType);var cb=/\.dds$/i.test(ab[0]);t=cb?a.ImageUtils.loadCompressedTextureCube(ab,Z.mapping,N(_)):a.ImageUtils.loadTextureCube(ab,Z.mapping,N(_))}else{var cb=/\.dds$/i.test(Z.url),db=e(Z.url,E.urlBaseType),eb=N(1);if(t=cb?a.ImageUtils.loadCompressedTexture(db,Z.mapping,eb):a.ImageUtils.loadTexture(db,Z.mapping,eb),void 0!==a[Z.minFilter]&&(t.minFilter=a[Z.minFilter]),void 0!==a[Z.magFilter]&&(t.magFilter=a[Z.magFilter]),Z.anisotropy&&(t.anisotropy=Z.anisotropy),Z.repeat&&(t.repeat.set(Z.repeat[0],Z.repeat[1]),1!==Z.repeat[0]&&(t.wrapS=a.RepeatWrapping),1!==Z.repeat[1]&&(t.wrapT=a.RepeatWrapping)),Z.offset&&t.offset.set(Z.offset[0],Z.offset[1]),Z.wrap){var fb={repeat:a.RepeatWrapping,mirror:a.MirroredRepeatWrapping};void 0!==fb[Z.wrap[0]]&&(t.wrapS=fb[Z.wrap[0]]),void 0!==fb[Z.wrap[1]]&&(t.wrapT=fb[Z.wrap[1]])}}A.textures[Y]=t}var gb,hb,ib;for(gb in E.materials){hb=E.materials[gb];for(ib in hb.parameters)if("envMap"===ib||"map"===ib||"lightMap"===ib||"bumpMap"===ib)hb.parameters[ib]=A.textures[hb.parameters[ib]];else if("shading"===ib)hb.parameters[ib]="flat"===hb.parameters[ib]?a.FlatShading:a.SmoothShading;else if("side"===ib)hb.parameters[ib]="double"==hb.parameters[ib]?a.DoubleSide:"back"==hb.parameters[ib]?a.BackSide:a.FrontSide;else if("blending"===ib)hb.parameters[ib]=hb.parameters[ib]in a?a[hb.parameters[ib]]:a.NormalBlending;else if("combine"===ib)hb.parameters[ib]=hb.parameters[ib]in a?a[hb.parameters[ib]]:a.MultiplyOperation;else if("vertexColors"===ib)"face"==hb.parameters[ib]?hb.parameters[ib]=a.FaceColors:hb.parameters[ib]&&(hb.parameters[ib]=a.VertexColors);else if("wrapRGB"===ib){var jb=hb.parameters[ib];hb.parameters[ib]=new a.Vector3(jb[0],jb[1],jb[2])}if(void 0!==hb.parameters.opacity&&hb.parameters.opacity<1&&(hb.parameters.transparent=!0),hb.parameters.normalMap){var kb=a.ShaderLib.normalmap,lb=a.UniformsUtils.clone(kb.uniforms),mb=hb.parameters.color,nb=hb.parameters.specular,ob=hb.parameters.ambient,pb=hb.parameters.shininess;lb.tNormal.value=A.textures[hb.parameters.normalMap],hb.parameters.normalScale&&lb.uNormalScale.value.set(hb.parameters.normalScale[0],hb.parameters.normalScale[1]),hb.parameters.map&&(lb.tDiffuse.value=hb.parameters.map,lb.enableDiffuse.value=!0),hb.parameters.envMap&&(lb.tCube.value=hb.parameters.envMap,lb.enableReflection.value=!0,lb.reflectivity.value=hb.parameters.reflectivity),hb.parameters.lightMap&&(lb.tAO.value=hb.parameters.lightMap,lb.enableAO.value=!0),hb.parameters.specularMap&&(lb.tSpecular.value=A.textures[hb.parameters.specularMap],lb.enableSpecular.value=!0),hb.parameters.displacementMap&&(lb.tDisplacement.value=A.textures[hb.parameters.displacementMap],lb.enableDisplacement.value=!0,lb.uDisplacementBias.value=hb.parameters.displacementBias,lb.uDisplacementScale.value=hb.parameters.displacementScale),lb.diffuse.value.setHex(mb),lb.specular.value.setHex(nb),lb.ambient.value.setHex(ob),lb.shininess.value=pb,hb.parameters.opacity&&(lb.opacity.value=hb.parameters.opacity);var qb={fragmentShader:kb.fragmentShader,vertexShader:kb.vertexShader,uniforms:lb,lights:!0,fog:!0};q=new a.ShaderMaterial(qb)}else q=new a[hb.type](hb.parameters);q.name=gb,A.materials[gb]=q}for(gb in E.materials)if(hb=E.materials[gb],hb.parameters.materials){for(var rb=[],bb=0;bb0){this.morphTargetBase=-1,this.morphTargetForcedOrder=[],this.morphTargetInfluences=[],this.morphTargetDictionary={};for(var a=0,b=this.geometry.morphTargets.length;b>a;a++)this.morphTargetInfluences.push(0),this.morphTargetDictionary[this.geometry.morphTargets[a].name]=a}},a.Mesh.prototype.getMorphTargetIndexByName=function(a){return void 0!==this.morphTargetDictionary[a]?this.morphTargetDictionary[a]:(console.log("THREE.Mesh.getMorphTargetIndexByName: morph target "+a+" does not exist. Returning 0."),0)},a.Mesh.prototype.clone=function(b){return void 0===b&&(b=new a.Mesh(this.geometry,this.material)),a.Object3D.prototype.clone.call(this,b),b},a.Bone=function(b){a.Object3D.call(this),this.skin=b,this.skinMatrix=new a.Matrix4},a.Bone.prototype=Object.create(a.Object3D.prototype),a.Bone.prototype.update=function(a,b){this.matrixAutoUpdate&&(b|=this.updateMatrix()),(b||this.matrixWorldNeedsUpdate)&&(a?this.skinMatrix.multiplyMatrices(a,this.matrix):this.skinMatrix.copy(this.matrix),this.matrixWorldNeedsUpdate=!1,b=!0);var c,d=this.children.length;for(c=0;d>c;c++)this.children[c].update(this.skinMatrix,b)},a.SkinnedMesh=function(b,c,d){a.Mesh.call(this,b,c),this.useVertexTexture=void 0!==d?d:!0,this.identityMatrix=new a.Matrix4,this.bones=[],this.boneMatrices=[];var e,f,g,h,i,j;if(this.geometry&&void 0!==this.geometry.bones){for(e=0;e256?64:k>64?32:k>16?16:8,this.boneTextureWidth=l,this.boneTextureHeight=l,this.boneMatrices=new Float32Array(this.boneTextureWidth*this.boneTextureHeight*4),this.boneTexture=new a.DataTexture(this.boneMatrices,this.boneTextureWidth,this.boneTextureHeight,a.RGBAFormat,a.FloatType),this.boneTexture.minFilter=a.NearestFilter,this.boneTexture.magFilter=a.NearestFilter,this.boneTexture.generateMipmaps=!1,this.boneTexture.flipY=!1}else this.boneMatrices=new Float32Array(16*k);this.pose()}},a.SkinnedMesh.prototype=Object.create(a.Mesh.prototype),a.SkinnedMesh.prototype.addBone=function(b){return void 0===b&&(b=new a.Bone(this)),this.bones.push(b),b},a.SkinnedMesh.prototype.updateMatrixWorld=function(){var b=new a.Matrix4;return function(c){this.matrixAutoUpdate&&this.updateMatrix(),(this.matrixWorldNeedsUpdate||c)&&(this.parent?this.matrixWorld.multiplyMatrices(this.parent.matrixWorld,this.matrix):this.matrixWorld.copy(this.matrix),this.matrixWorldNeedsUpdate=!1,c=!0);for(var d=0,e=this.children.length;e>d;d++){var f=this.children[d];f instanceof a.Bone?f.update(this.identityMatrix,!1):f.updateMatrixWorld(!0)}if(void 0==this.boneInverses){this.boneInverses=[];for(var g=0,h=this.bones.length;h>g;g++){var i=new a.Matrix4;i.getInverse(this.bones[g].skinMatrix),this.boneInverses.push(i)}}for(var g=0,h=this.bones.length;h>g;g++)b.multiplyMatrices(this.bones[g].skinMatrix,this.boneInverses[g]),b.flattenToArrayOffset(this.boneMatrices,16*g);this.useVertexTexture&&(this.boneTexture.needsUpdate=!0)}}(),a.SkinnedMesh.prototype.pose=function(){this.updateMatrixWorld(!0),this.normalizeSkinWeights()},a.SkinnedMesh.prototype.normalizeSkinWeights=function(){if(this.geometry instanceof a.Geometry)for(var b=0;be;e++){var g=a.morphTargets[e],h=g.name.match(d);if(h&&h.length>1){{var i=h[1];h[2]}c[i]||(c[i]={start:1/0,end:-1/0});var j=c[i];ej.end&&(j.end=e),b||(b=i)}}a.firstAnimation=b},a.MorphAnimMesh.prototype.setAnimationLabel=function(a,b,c){this.geometry.animations||(this.geometry.animations={}),this.geometry.animations[a]={start:b,end:c}},a.MorphAnimMesh.prototype.playAnimation=function(a,b){var c=this.geometry.animations[a];c?(this.setFrameRange(c.start,c.end),this.duration=1e3*((c.end-c.start)/b),this.time=0):console.warn("animation["+a+"] undefined")},a.MorphAnimMesh.prototype.updateAnimation=function(b){var c=this.duration/this.length;this.time+=this.direction*b,this.mirroredLoop?(this.time>this.duration||this.time<0)&&(this.direction*=-1,this.time>this.duration&&(this.time=this.duration,this.directionBackwards=!0),this.time<0&&(this.time=0,this.directionBackwards=!1)):(this.time=this.time%this.duration,this.time<0&&(this.time+=this.duration));var d=this.startKeyframe+a.Math.clamp(Math.floor(this.time/c),0,this.length-1);d!==this.currentKeyframe&&(this.morphTargetInfluences[this.lastKeyframe]=0,this.morphTargetInfluences[this.currentKeyframe]=1,this.morphTargetInfluences[d]=0,this.lastKeyframe=this.currentKeyframe,this.currentKeyframe=d);var e=this.time%c/c;this.directionBackwards&&(e=1-e),this.morphTargetInfluences[this.currentKeyframe]=e,this.morphTargetInfluences[this.lastKeyframe]=1-e},a.MorphAnimMesh.prototype.clone=function(b){return void 0===b&&(b=new a.MorphAnimMesh(this.geometry,this.material)),b.duration=this.duration,b.mirroredLoop=this.mirroredLoop,b.time=this.time,b.lastKeyframe=this.lastKeyframe,b.currentKeyframe=this.currentKeyframe,b.direction=this.direction,b.directionBackwards=this.directionBackwards,a.Mesh.prototype.clone.call(this,b),b},a.LOD=function(){a.Object3D.call(this),this.objects=[]},a.LOD.prototype=Object.create(a.Object3D.prototype),a.LOD.prototype.addLevel=function(a,b){void 0===b&&(b=0),b=Math.abs(b);for(var c=0;cb&&!(a1){b.setFromMatrixPosition(a.matrixWorld),c.setFromMatrixPosition(this.matrixWorld);var d=b.distanceTo(c);this.objects[0].object.visible=!0;for(var e=1,f=this.objects.length;f>e&&d>=this.objects[e].distance;e++)this.objects[e-1].object.visible=!1,this.objects[e].object.visible=!0;for(;f>e;e++)this.objects[e].object.visible=!1}}}(),a.LOD.prototype.clone=function(b){void 0===b&&(b=new a.LOD),a.Object3D.prototype.clone.call(this,b);for(var c=0,d=this.objects.length;d>c;c++){var e=this.objects[c].object.clone();e.visible=0===c,b.addLevel(e,this.objects[c].distance)}return b},a.Sprite=function(){var b=new a.Geometry2(3);return b.vertices.set([-.5,-.5,0,.5,-.5,0,.5,.5,0]),function(c){a.Object3D.call(this),this.geometry=b,this.material=void 0!==c?c:new a.SpriteMaterial}}(),a.Sprite.prototype=Object.create(a.Object3D.prototype),a.Sprite.prototype.updateMatrix=function(){this.matrix.compose(this.position,this.quaternion,this.scale),this.matrixWorldNeedsUpdate=!0},a.Sprite.prototype.clone=function(b){return void 0===b&&(b=new a.Sprite(this.material)),a.Object3D.prototype.clone.call(this,b),b},a.Particle=a.Sprite,a.Scene=function(){a.Object3D.call(this),this.fog=null,this.overrideMaterial=null,this.autoUpdate=!0,this.matrixAutoUpdate=!1,this.__lights=[],this.__objectsAdded=[],this.__objectsRemoved=[]},a.Scene.prototype=Object.create(a.Object3D.prototype),a.Scene.prototype.__addObject=function(b){if(b instanceof a.Light)-1===this.__lights.indexOf(b)&&this.__lights.push(b),b.target&&void 0===b.target.parent&&this.add(b.target);else if(!(b instanceof a.Camera||b instanceof a.Bone)){this.__objectsAdded.push(b);var c=this.__objectsRemoved.indexOf(b);-1!==c&&this.__objectsRemoved.splice(c,1)}this.dispatchEvent({type:"objectAdded",object:b}),b.dispatchEvent({type:"addedToScene",scene:this});for(var d=0;db;b++){var d=B[b],e=d.color;d instanceof a.AmbientLight?Fb.add(e):d instanceof a.DirectionalLight?Gb.add(e):d instanceof a.PointLight&&Hb.add(e)}}function d(b,c,d){for(var e=0,f=B.length;f>e;e++){var g=B[e];if(Ab.copy(g.color),g instanceof a.DirectionalLight){var h=Ib.setFromMatrixPosition(g.matrixWorld).normalize(),i=c.dot(h);if(0>=i)continue;i*=g.intensity,d.add(Ab.multiplyScalar(i))}else if(g instanceof a.PointLight){var h=Ib.setFromMatrixPosition(g.matrixWorld),i=c.dot(Ib.subVectors(h,b).normalize());if(0>=i)continue;if(i*=0==g.distance?1:1-Math.min(b.distanceTo(h)/g.distance,1),0==i)continue;i*=g.intensity,d.add(Ab.multiplyScalar(i))}}}function e(b,c,d){q(d.opacity),r(d.blending);var e=c.scale.x*fb,f=c.scale.y*gb,g=.5*Math.sqrt(e*e+f*f);if(Eb.min.set(b.x-g,b.y-g),Eb.max.set(b.x+g,b.y+g),d instanceof a.SpriteMaterial||d instanceof a.ParticleSystemMaterial){var h=d.map;if(null!==h){h.hasEventListener("update",k)===!1&&(void 0!==h.image&&h.image.width>0&&l(h),h.addEventListener("update",k));var i=Bb[h.id];w(void 0!==i?i:"rgba( 0, 0, 0, 1 )");var j=h.image,m=j.width*h.offset.x,n=j.height*h.offset.y,o=j.width*h.repeat.x,p=j.height*h.repeat.y,s=e/o,t=f/p;hb.save(),hb.translate(b.x,b.y),0!==d.rotation&&hb.rotate(d.rotation),hb.translate(-e/2,-f/2),hb.scale(s,t),hb.translate(-m,-n),hb.fillRect(m,n,o,p),hb.restore()}else w(d.color.getStyle()),hb.save(),hb.translate(b.x,b.y),0!==d.rotation&&hb.rotate(d.rotation),hb.scale(e,-f),hb.fillRect(-.5,-.5,1,1),hb.restore()}else d instanceof a.SpriteCanvasMaterial&&(v(d.color.getStyle()),w(d.color.getStyle()),hb.save(),hb.translate(b.x,b.y),0!==d.rotation&&hb.rotate(d.rotation),hb.scale(e,f),d.program(hb),hb.restore())}function f(b,c,d,e){if(q(e.opacity),r(e.blending),hb.beginPath(),hb.moveTo(b.positionScreen.x,b.positionScreen.y),hb.lineTo(c.positionScreen.x,c.positionScreen.y),e instanceof a.LineBasicMaterial){if(s(e.linewidth),t(e.linecap),u(e.linejoin),e.vertexColors!==a.VertexColors)v(e.color.getStyle());else{var f=d.vertexColors[0].getStyle(),g=d.vertexColors[1].getStyle();if(f===g)v(f);else{try{var h=hb.createLinearGradient(b.positionScreen.x,b.positionScreen.y,c.positionScreen.x,c.positionScreen.y);h.addColorStop(0,f),h.addColorStop(1,g)}catch(i){h=f}v(h)}}hb.stroke(),Eb.expandByScalar(2*e.linewidth)}else e instanceof a.LineDashedMaterial&&(s(e.linewidth),t(e.linecap),u(e.linejoin),v(e.color.getStyle()),x(e.dashSize,e.gapSize),hb.stroke(),Eb.expandByScalar(2*e.linewidth),x(null,null))}function g(b,c,e,f,g,k,l,p){ab.info.render.vertices+=3,ab.info.render.faces++,q(p.opacity),r(p.blending),G=b.positionScreen.x,H=b.positionScreen.y,I=c.positionScreen.x,J=c.positionScreen.y,K=e.positionScreen.x,L=e.positionScreen.y,h(G,H,I,J,K,L),(p instanceof a.MeshLambertMaterial||p instanceof a.MeshPhongMaterial)&&null===p.map?(yb.copy(p.color),zb.copy(p.emissive),p.vertexColors===a.FaceColors&&yb.multiply(l.color),p.wireframe===!1&&p.shading===a.SmoothShading&&3===l.vertexNormalsLength?(ub.copy(Fb),vb.copy(Fb),wb.copy(Fb),d(l.v1.positionWorld,l.vertexNormalsModel[0],ub),d(l.v2.positionWorld,l.vertexNormalsModel[1],vb),d(l.v3.positionWorld,l.vertexNormalsModel[2],wb),ub.multiply(yb).add(zb),vb.multiply(yb).add(zb),wb.multiply(yb).add(zb),xb.addColors(vb,wb).multiplyScalar(.5),O=o(ub,vb,wb,xb),n(G,H,I,J,K,L,0,0,1,0,0,1,O)):(tb.copy(Fb),d(l.centroidModel,l.normalModel,tb),tb.multiply(yb).add(zb),p.wireframe===!0?i(tb,p.wireframeLinewidth,p.wireframeLinecap,p.wireframeLinejoin):j(tb))):p instanceof a.MeshBasicMaterial||p instanceof a.MeshLambertMaterial||p instanceof a.MeshPhongMaterial?null!==p.map?p.map.mapping instanceof a.UVMapping&&(P=l.uvs[0],m(G,H,I,J,K,L,P[f].x,P[f].y,P[g].x,P[g].y,P[k].x,P[k].y,p.map)):null!==p.envMap?p.envMap.mapping instanceof a.SphericalReflectionMapping&&(Jb.copy(l.vertexNormalsModel[f]).applyMatrix3(Kb),Q=.5*Jb.x+.5,R=.5*Jb.y+.5,Jb.copy(l.vertexNormalsModel[g]).applyMatrix3(Kb),S=.5*Jb.x+.5,T=.5*Jb.y+.5,Jb.copy(l.vertexNormalsModel[k]).applyMatrix3(Kb),U=.5*Jb.x+.5,V=.5*Jb.y+.5,m(G,H,I,J,K,L,Q,R,S,T,U,V,p.envMap)):(tb.copy(p.color),p.vertexColors===a.FaceColors&&tb.multiply(l.color),p.wireframe===!0?i(tb,p.wireframeLinewidth,p.wireframeLinecap,p.wireframeLinejoin):j(tb)):p instanceof a.MeshDepthMaterial?(M=C.near,N=C.far,ub.r=ub.g=ub.b=1-y(b.positionScreen.z*b.positionScreen.w,M,N),vb.r=vb.g=vb.b=1-y(c.positionScreen.z*c.positionScreen.w,M,N),wb.r=wb.g=wb.b=1-y(e.positionScreen.z*e.positionScreen.w,M,N),xb.addColors(vb,wb).multiplyScalar(.5),O=o(ub,vb,wb,xb),n(G,H,I,J,K,L,0,0,1,0,0,1,O)):p instanceof a.MeshNormalMaterial&&(p.shading===a.FlatShading?(Jb.copy(l.normalModel).applyMatrix3(Kb),tb.setRGB(Jb.x,Jb.y,Jb.z).multiplyScalar(.5).addScalar(.5),p.wireframe===!0?i(tb,p.wireframeLinewidth,p.wireframeLinecap,p.wireframeLinejoin):j(tb)):p.shading===a.SmoothShading&&(Jb.copy(l.vertexNormalsModel[f]).applyMatrix3(Kb),ub.setRGB(Jb.x,Jb.y,Jb.z).multiplyScalar(.5).addScalar(.5),Jb.copy(l.vertexNormalsModel[g]).applyMatrix3(Kb),vb.setRGB(Jb.x,Jb.y,Jb.z).multiplyScalar(.5).addScalar(.5),Jb.copy(l.vertexNormalsModel[k]).applyMatrix3(Kb),wb.setRGB(Jb.x,Jb.y,Jb.z).multiplyScalar(.5).addScalar(.5),xb.addColors(vb,wb).multiplyScalar(.5),O=o(ub,vb,wb,xb),n(G,H,I,J,K,L,0,0,1,0,0,1,O)))}function h(a,b,c,d,e,f){hb.beginPath(),hb.moveTo(a,b),hb.lineTo(c,d),hb.lineTo(e,f),hb.closePath()}function i(a,b,c,d){s(b),t(c),u(d),v(a.getStyle()),hb.stroke(),Eb.expandByScalar(2*b)}function j(a){w(a.getStyle()),hb.fill()}function k(a){l(a.target)}function l(b){var c=b.wrapS===a.RepeatWrapping,d=b.wrapT===a.RepeatWrapping,e=b.image,f=document.createElement("canvas");f.width=e.width,f.height=e.height;var g=f.getContext("2d");g.setTransform(1,0,0,-1,0,e.height),g.drawImage(e,0,0),Bb[b.id]=hb.createPattern(f,c===!0&&d===!0?"repeat":c===!0&&d===!1?"repeat-x":c===!1&&d===!0?"repeat-y":"no-repeat")}function m(b,c,d,e,f,g,h,i,j,m,n,o,p){if(!(p instanceof a.DataTexture)){p.hasEventListener("update",k)===!1&&(void 0!==p.image&&p.image.width>0&&l(p),p.addEventListener("update",k));var q=Bb[p.id];if(void 0===q)return w("rgba(0,0,0,1)"),void hb.fill();w(q);var r,s,t,u,v,x,y,z,A=p.offset.x/p.repeat.x,B=p.offset.y/p.repeat.y,C=p.image.width*p.repeat.x,D=p.image.height*p.repeat.y;h=(h+A)*C,i=(i+B)*D,j=(j+A)*C,m=(m+B)*D,n=(n+A)*C,o=(o+B)*D,d-=b,e-=c,f-=b,g-=c,j-=h,m-=i,n-=h,o-=i,y=j*o-n*m,0!==y&&(z=1/y,r=(o*d-m*f)*z,s=(o*e-m*g)*z,t=(j*f-n*d)*z,u=(j*g-n*e)*z,v=b-r*h-t*i,x=c-s*h-u*i,hb.save(),hb.transform(r,s,t,u,v,x),hb.fill(),hb.restore())}}function n(a,b,c,d,e,f,g,h,i,j,k,l,m){var n,o,p,q,r,s,t,u,v=m.width-1,w=m.height-1;g*=v,h*=w,i*=v,j*=w,k*=v,l*=w,c-=a,d-=b,e-=a,f-=b,i-=g,j-=h,k-=g,l-=h,t=i*l-k*j,u=1/t,n=(l*c-j*e)*u,o=(l*d-j*f)*u,p=(i*e-k*c)*u,q=(i*f-k*d)*u,r=a-n*g-p*h,s=b-o*g-q*h,hb.save(),hb.transform(n,o,p,q,r,s),hb.clip(),hb.drawImage(m,0,0),hb.restore()}function o(a,b,c,d){return Z[0]=255*a.r|0,Z[1]=255*a.g|0,Z[2]=255*a.b|0,Z[4]=255*b.r|0,Z[5]=255*b.g|0,Z[6]=255*b.b|0,Z[8]=255*c.r|0,Z[9]=255*c.g|0,Z[10]=255*c.b|0,Z[12]=255*d.r|0,Z[13]=255*d.g|0,Z[14]=255*d.b|0,X.putImageData(Y,0,0),_.drawImage(W,0,0),$}function p(a,b,c){var d,e=b.x-a.x,f=b.y-a.y,g=e*e+f*f;0!==g&&(d=c/Math.sqrt(g),e*=d,f*=d,b.x+=e,b.y+=f,a.x-=e,a.y-=f)}function q(a){kb!==a&&(hb.globalAlpha=a,kb=a)}function r(b){lb!==b&&(b===a.NormalBlending?hb.globalCompositeOperation="source-over":b===a.AdditiveBlending?hb.globalCompositeOperation="lighter":b===a.SubtractiveBlending&&(hb.globalCompositeOperation="darker"),lb=b)}function s(a){ob!==a&&(hb.lineWidth=a,ob=a)}function t(a){pb!==a&&(hb.lineCap=a,pb=a)}function u(a){qb!==a&&(hb.lineJoin=a,qb=a)}function v(a){mb!==a&&(hb.strokeStyle=a,mb=a)}function w(a){nb!==a&&(hb.fillStyle=a,nb=a)}function x(a,b){(rb!==a||sb!==b)&&(hb.setLineDash([a,b]),rb=a,sb=b)}console.log("THREE.CanvasRenderer",a.REVISION);var y=a.Math.smoothstep;b=b||{};var z,A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z,$,_,ab=this,bb=new a.Projector,cb=void 0!==b.canvas?b.canvas:document.createElement("canvas"),db=cb.width,eb=cb.height,fb=Math.floor(db/2),gb=Math.floor(eb/2),hb=cb.getContext("2d",{alpha:b.alpha===!0}),ib=new a.Color(0),jb=0,kb=1,lb=0,mb=null,nb=null,ob=null,pb=null,qb=null,rb=null,sb=0,tb=(new a.RenderableVertex,new a.RenderableVertex,new a.Color),ub=new a.Color,vb=new a.Color,wb=new a.Color,xb=new a.Color,yb=new a.Color,zb=new a.Color,Ab=new a.Color,Bb={},Cb=new a.Box2,Db=new a.Box2,Eb=new a.Box2,Fb=new a.Color,Gb=new a.Color,Hb=new a.Color,Ib=new a.Vector3,Jb=new a.Vector3,Kb=new a.Matrix3,Lb=16;W=document.createElement("canvas"),W.width=W.height=2,X=W.getContext("2d"),X.fillStyle="rgba(0,0,0,1)",X.fillRect(0,0,2,2),Y=X.getImageData(0,0,2,2),Z=Y.data,$=document.createElement("canvas"),$.width=$.height=Lb,_=$.getContext("2d"),_.translate(-Lb/2,-Lb/2),_.scale(Lb,Lb),Lb--,void 0===hb.setLineDash&&(hb.setLineDash=void 0!==hb.mozDash?function(a){hb.mozDash=null!==a[0]?a:null}:function(){}),this.domElement=cb,this.devicePixelRatio=void 0!==b.devicePixelRatio?b.devicePixelRatio:void 0!==self.devicePixelRatio?self.devicePixelRatio:1,this.autoClear=!0,this.sortObjects=!0,this.sortElements=!0,this.info={render:{vertices:0,faces:0}},this.supportsVertexTextures=function(){},this.setFaceCulling=function(){},this.setSize=function(a,b,c){db=a*this.devicePixelRatio,eb=b*this.devicePixelRatio,fb=Math.floor(db/2),gb=Math.floor(eb/2),cb.width=db,cb.height=eb,1!==this.devicePixelRatio&&c!==!1&&(cb.style.width=a+"px",cb.style.height=b+"px"),Cb.min.set(-fb,-gb),Cb.max.set(fb,gb),Db.min.set(-fb,-gb),Db.max.set(fb,gb),kb=1,lb=0,mb=null,nb=null,ob=null,pb=null,qb=null},this.setClearColor=function(a,b){ib.set(a),jb=void 0!==b?b:1,Db.min.set(-fb,-gb),Db.max.set(fb,gb)},this.setClearColorHex=function(a,b){console.warn("DEPRECATED: .setClearColorHex() is being removed. Use .setClearColor() instead."),this.setClearColor(a,b)},this.getMaxAnisotropy=function(){return 0},this.clear=function(){hb.setTransform(1,0,0,-1,fb,gb),Db.empty()===!1&&(Db.intersect(Cb),Db.expandByScalar(2),1>jb&&hb.clearRect(0|Db.min.x,0|Db.min.y,Db.max.x-Db.min.x|0,Db.max.y-Db.min.y|0),jb>0&&(r(a.NormalBlending),q(1),w("rgba("+Math.floor(255*ib.r)+","+Math.floor(255*ib.g)+","+Math.floor(255*ib.b)+","+jb+")"),hb.fillRect(0|Db.min.x,0|Db.min.y,Db.max.x-Db.min.x|0,Db.max.y-Db.min.y|0)),Db.makeEmpty())},this.clearColor=function(){},this.clearDepth=function(){},this.clearStencil=function(){},this.render=function(b,d){if(d instanceof a.Camera==!1)return void console.error("THREE.CanvasRenderer.render: camera is not an instance of THREE.Camera.");this.autoClear===!0&&this.clear(),hb.setTransform(1,0,0,-1,fb,gb),ab.info.render.vertices=0,ab.info.render.faces=0,z=bb.projectScene(b,d,this.sortObjects,this.sortElements),A=z.elements,B=z.lights,C=d,Kb.getNormalMatrix(d.matrixWorldInverse),c();for(var h=0,i=A.length;i>h;h++){var j=A[h],k=j.material;if(void 0!==k&&k.visible!==!1){if(Eb.makeEmpty(),j instanceof a.RenderableSprite)D=j,D.x*=fb,D.y*=gb,e(D,j,k);else if(j instanceof a.RenderableLine)D=j.v1,E=j.v2,D.positionScreen.x*=fb,D.positionScreen.y*=gb,E.positionScreen.x*=fb,E.positionScreen.y*=gb,Eb.setFromPoints([D.positionScreen,E.positionScreen]),Cb.isIntersectionBox(Eb)===!0&&f(D,E,j,k);else if(j instanceof a.RenderableFace){if(D=j.v1,E=j.v2,F=j.v3,D.positionScreen.z<-1||D.positionScreen.z>1)continue;if(E.positionScreen.z<-1||E.positionScreen.z>1)continue;if(F.positionScreen.z<-1||F.positionScreen.z>1)continue;D.positionScreen.x*=fb,D.positionScreen.y*=gb,E.positionScreen.x*=fb,E.positionScreen.y*=gb,F.positionScreen.x*=fb,F.positionScreen.y*=gb,k.overdraw>0&&(p(D.positionScreen,E.positionScreen,k.overdraw),p(E.positionScreen,F.positionScreen,k.overdraw),p(F.positionScreen,D.positionScreen,k.overdraw)),Eb.setFromPoints([D.positionScreen,E.positionScreen,F.positionScreen]),Cb.isIntersectionBox(Eb)===!0&&g(D,E,F,0,1,2,j,k)}Db.union(Eb)}}hb.setTransform(1,0,0,1,0,0)}},a.ShaderChunk={fog_pars_fragment:["#ifdef USE_FOG","uniform vec3 fogColor;","#ifdef FOG_EXP2","uniform float fogDensity;","#else","uniform float fogNear;","uniform float fogFar;","#endif","#endif"].join("\n"),fog_fragment:["#ifdef USE_FOG","float depth = gl_FragCoord.z / gl_FragCoord.w;","#ifdef FOG_EXP2","const float LOG2 = 1.442695;","float fogFactor = exp2( - fogDensity * fogDensity * depth * depth * LOG2 );","fogFactor = 1.0 - clamp( fogFactor, 0.0, 1.0 );","#else","float fogFactor = smoothstep( fogNear, fogFar, depth );","#endif","gl_FragColor = mix( gl_FragColor, vec4( fogColor, gl_FragColor.w ), fogFactor );","#endif"].join("\n"),envmap_pars_fragment:["#ifdef USE_ENVMAP","uniform float reflectivity;","uniform samplerCube envMap;","uniform float flipEnvMap;","uniform int combine;","#if defined( USE_BUMPMAP ) || defined( USE_NORMALMAP )","uniform bool useRefract;","uniform float refractionRatio;","#else","varying vec3 vReflect;","#endif","#endif"].join("\n"),envmap_fragment:["#ifdef USE_ENVMAP","vec3 reflectVec;","#if defined( USE_BUMPMAP ) || defined( USE_NORMALMAP )","vec3 cameraToVertex = normalize( vWorldPosition - cameraPosition );","if ( useRefract ) {","reflectVec = refract( cameraToVertex, normal, refractionRatio );","} else { ","reflectVec = reflect( cameraToVertex, normal );","}","#else","reflectVec = vReflect;","#endif","#ifdef DOUBLE_SIDED","float flipNormal = ( -1.0 + 2.0 * float( gl_FrontFacing ) );","vec4 cubeColor = textureCube( envMap, flipNormal * vec3( flipEnvMap * reflectVec.x, reflectVec.yz ) );","#else","vec4 cubeColor = textureCube( envMap, vec3( flipEnvMap * reflectVec.x, reflectVec.yz ) );","#endif","#ifdef GAMMA_INPUT","cubeColor.xyz *= cubeColor.xyz;","#endif","if ( combine == 1 ) {","gl_FragColor.xyz = mix( gl_FragColor.xyz, cubeColor.xyz, specularStrength * reflectivity );","} else if ( combine == 2 ) {","gl_FragColor.xyz += cubeColor.xyz * specularStrength * reflectivity;","} else {","gl_FragColor.xyz = mix( gl_FragColor.xyz, gl_FragColor.xyz * cubeColor.xyz, specularStrength * reflectivity );","}","#endif"].join("\n"),envmap_pars_vertex:["#if defined( USE_ENVMAP ) && ! defined( USE_BUMPMAP ) && ! defined( USE_NORMALMAP )","varying vec3 vReflect;","uniform float refractionRatio;","uniform bool useRefract;","#endif"].join("\n"),worldpos_vertex:["#if defined( USE_ENVMAP ) || defined( PHONG ) || defined( LAMBERT ) || defined ( USE_SHADOWMAP )","#ifdef USE_SKINNING","vec4 worldPosition = modelMatrix * skinned;","#endif","#if defined( USE_MORPHTARGETS ) && ! defined( USE_SKINNING )","vec4 worldPosition = modelMatrix * vec4( morphed, 1.0 );","#endif","#if ! defined( USE_MORPHTARGETS ) && ! defined( USE_SKINNING )","vec4 worldPosition = modelMatrix * vec4( position, 1.0 );","#endif","#endif"].join("\n"),envmap_vertex:["#if defined( USE_ENVMAP ) && ! defined( USE_BUMPMAP ) && ! defined( USE_NORMALMAP )","vec3 worldNormal = mat3( modelMatrix[ 0 ].xyz, modelMatrix[ 1 ].xyz, modelMatrix[ 2 ].xyz ) * objectNormal;","worldNormal = normalize( worldNormal );","vec3 cameraToVertex = normalize( worldPosition.xyz - cameraPosition );","if ( useRefract ) {","vReflect = refract( cameraToVertex, worldNormal, refractionRatio );","} else {","vReflect = reflect( cameraToVertex, worldNormal );","}","#endif"].join("\n"),map_particle_pars_fragment:["#ifdef USE_MAP","uniform sampler2D map;","#endif"].join("\n"),map_particle_fragment:["#ifdef USE_MAP","gl_FragColor = gl_FragColor * texture2D( map, vec2( gl_PointCoord.x, 1.0 - gl_PointCoord.y ) );","#endif"].join("\n"),map_pars_vertex:["#if defined( USE_MAP ) || defined( USE_BUMPMAP ) || defined( USE_NORMALMAP ) || defined( USE_SPECULARMAP )","varying vec2 vUv;","uniform vec4 offsetRepeat;","#endif"].join("\n"),map_pars_fragment:["#if defined( USE_MAP ) || defined( USE_BUMPMAP ) || defined( USE_NORMALMAP ) || defined( USE_SPECULARMAP )","varying vec2 vUv;","#endif","#ifdef USE_MAP","uniform sampler2D map;","#endif"].join("\n"),map_vertex:["#if defined( USE_MAP ) || defined( USE_BUMPMAP ) || defined( USE_NORMALMAP ) || defined( USE_SPECULARMAP )","vUv = uv * offsetRepeat.zw + offsetRepeat.xy;","#endif"].join("\n"),map_fragment:["#ifdef USE_MAP","vec4 texelColor = texture2D( map, vUv );","#ifdef GAMMA_INPUT","texelColor.xyz *= texelColor.xyz;","#endif","gl_FragColor = gl_FragColor * texelColor;","#endif"].join("\n"),lightmap_pars_fragment:["#ifdef USE_LIGHTMAP","varying vec2 vUv2;","uniform sampler2D lightMap;","#endif"].join("\n"),lightmap_pars_vertex:["#ifdef USE_LIGHTMAP","varying vec2 vUv2;","#endif"].join("\n"),lightmap_fragment:["#ifdef USE_LIGHTMAP","gl_FragColor = gl_FragColor * texture2D( lightMap, vUv2 );","#endif"].join("\n"),lightmap_vertex:["#ifdef USE_LIGHTMAP","vUv2 = uv2;","#endif"].join("\n"),bumpmap_pars_fragment:["#ifdef USE_BUMPMAP","uniform sampler2D bumpMap;","uniform float bumpScale;","vec2 dHdxy_fwd() {","vec2 dSTdx = dFdx( vUv );","vec2 dSTdy = dFdy( vUv );","float Hll = bumpScale * texture2D( bumpMap, vUv ).x;","float dBx = bumpScale * texture2D( bumpMap, vUv + dSTdx ).x - Hll;","float dBy = bumpScale * texture2D( bumpMap, vUv + dSTdy ).x - Hll;","return vec2( dBx, dBy );","}","vec3 perturbNormalArb( vec3 surf_pos, vec3 surf_norm, vec2 dHdxy ) {","vec3 vSigmaX = dFdx( surf_pos );","vec3 vSigmaY = dFdy( surf_pos );","vec3 vN = surf_norm;","vec3 R1 = cross( vSigmaY, vN );","vec3 R2 = cross( vN, vSigmaX );","float fDet = dot( vSigmaX, R1 );","vec3 vGrad = sign( fDet ) * ( dHdxy.x * R1 + dHdxy.y * R2 );","return normalize( abs( fDet ) * surf_norm - vGrad );","}","#endif"].join("\n"),normalmap_pars_fragment:["#ifdef USE_NORMALMAP","uniform sampler2D normalMap;","uniform vec2 normalScale;","vec3 perturbNormal2Arb( vec3 eye_pos, vec3 surf_norm ) {","vec3 q0 = dFdx( eye_pos.xyz );","vec3 q1 = dFdy( eye_pos.xyz );","vec2 st0 = dFdx( vUv.st );","vec2 st1 = dFdy( vUv.st );","vec3 S = normalize( q0 * st1.t - q1 * st0.t );","vec3 T = normalize( -q0 * st1.s + q1 * st0.s );","vec3 N = normalize( surf_norm );","vec3 mapN = texture2D( normalMap, vUv ).xyz * 2.0 - 1.0;","mapN.xy = normalScale * mapN.xy;","mat3 tsn = mat3( S, T, N );","return normalize( tsn * mapN );","}","#endif"].join("\n"),specularmap_pars_fragment:["#ifdef USE_SPECULARMAP","uniform sampler2D specularMap;","#endif"].join("\n"),specularmap_fragment:["float specularStrength;","#ifdef USE_SPECULARMAP","vec4 texelSpecular = texture2D( specularMap, vUv );","specularStrength = texelSpecular.r;","#else","specularStrength = 1.0;","#endif"].join("\n"),lights_lambert_pars_vertex:["uniform vec3 ambient;","uniform vec3 diffuse;","uniform vec3 emissive;","uniform vec3 ambientLightColor;","#if MAX_DIR_LIGHTS > 0","uniform vec3 directionalLightColor[ MAX_DIR_LIGHTS ];","uniform vec3 directionalLightDirection[ MAX_DIR_LIGHTS ];","#endif","#if MAX_HEMI_LIGHTS > 0","uniform vec3 hemisphereLightSkyColor[ MAX_HEMI_LIGHTS ];","uniform vec3 hemisphereLightGroundColor[ MAX_HEMI_LIGHTS ];","uniform vec3 hemisphereLightDirection[ MAX_HEMI_LIGHTS ];","#endif","#if MAX_POINT_LIGHTS > 0","uniform vec3 pointLightColor[ MAX_POINT_LIGHTS ];","uniform vec3 pointLightPosition[ MAX_POINT_LIGHTS ];","uniform float pointLightDistance[ MAX_POINT_LIGHTS ];","#endif","#if MAX_SPOT_LIGHTS > 0","uniform vec3 spotLightColor[ MAX_SPOT_LIGHTS ];","uniform vec3 spotLightPosition[ MAX_SPOT_LIGHTS ];","uniform vec3 spotLightDirection[ MAX_SPOT_LIGHTS ];","uniform float spotLightDistance[ MAX_SPOT_LIGHTS ];","uniform float spotLightAngleCos[ MAX_SPOT_LIGHTS ];","uniform float spotLightExponent[ MAX_SPOT_LIGHTS ];","#endif","#ifdef WRAP_AROUND","uniform vec3 wrapRGB;","#endif"].join("\n"),lights_lambert_vertex:["vLightFront = vec3( 0.0 );","#ifdef DOUBLE_SIDED","vLightBack = vec3( 0.0 );","#endif","transformedNormal = normalize( transformedNormal );","#if MAX_DIR_LIGHTS > 0","for( int i = 0; i < MAX_DIR_LIGHTS; i ++ ) {","vec4 lDirection = viewMatrix * vec4( directionalLightDirection[ i ], 0.0 );","vec3 dirVector = normalize( lDirection.xyz );","float dotProduct = dot( transformedNormal, dirVector );","vec3 directionalLightWeighting = vec3( max( dotProduct, 0.0 ) );","#ifdef DOUBLE_SIDED","vec3 directionalLightWeightingBack = vec3( max( -dotProduct, 0.0 ) );","#ifdef WRAP_AROUND","vec3 directionalLightWeightingHalfBack = vec3( max( -0.5 * dotProduct + 0.5, 0.0 ) );","#endif","#endif","#ifdef WRAP_AROUND","vec3 directionalLightWeightingHalf = vec3( max( 0.5 * dotProduct + 0.5, 0.0 ) );","directionalLightWeighting = mix( directionalLightWeighting, directionalLightWeightingHalf, wrapRGB );","#ifdef DOUBLE_SIDED","directionalLightWeightingBack = mix( directionalLightWeightingBack, directionalLightWeightingHalfBack, wrapRGB );","#endif","#endif","vLightFront += directionalLightColor[ i ] * directionalLightWeighting;","#ifdef DOUBLE_SIDED","vLightBack += directionalLightColor[ i ] * directionalLightWeightingBack;","#endif","}","#endif","#if MAX_POINT_LIGHTS > 0","for( int i = 0; i < MAX_POINT_LIGHTS; i ++ ) {","vec4 lPosition = viewMatrix * vec4( pointLightPosition[ i ], 1.0 );","vec3 lVector = lPosition.xyz - mvPosition.xyz;","float lDistance = 1.0;","if ( pointLightDistance[ i ] > 0.0 )","lDistance = 1.0 - min( ( length( lVector ) / pointLightDistance[ i ] ), 1.0 );","lVector = normalize( lVector );","float dotProduct = dot( transformedNormal, lVector );","vec3 pointLightWeighting = vec3( max( dotProduct, 0.0 ) );","#ifdef DOUBLE_SIDED","vec3 pointLightWeightingBack = vec3( max( -dotProduct, 0.0 ) );","#ifdef WRAP_AROUND","vec3 pointLightWeightingHalfBack = vec3( max( -0.5 * dotProduct + 0.5, 0.0 ) );","#endif","#endif","#ifdef WRAP_AROUND","vec3 pointLightWeightingHalf = vec3( max( 0.5 * dotProduct + 0.5, 0.0 ) );","pointLightWeighting = mix( pointLightWeighting, pointLightWeightingHalf, wrapRGB );","#ifdef DOUBLE_SIDED","pointLightWeightingBack = mix( pointLightWeightingBack, pointLightWeightingHalfBack, wrapRGB );","#endif","#endif","vLightFront += pointLightColor[ i ] * pointLightWeighting * lDistance;","#ifdef DOUBLE_SIDED","vLightBack += pointLightColor[ i ] * pointLightWeightingBack * lDistance;","#endif","}","#endif","#if MAX_SPOT_LIGHTS > 0","for( int i = 0; i < MAX_SPOT_LIGHTS; i ++ ) {","vec4 lPosition = viewMatrix * vec4( spotLightPosition[ i ], 1.0 );","vec3 lVector = lPosition.xyz - mvPosition.xyz;","float spotEffect = dot( spotLightDirection[ i ], normalize( spotLightPosition[ i ] - worldPosition.xyz ) );","if ( spotEffect > spotLightAngleCos[ i ] ) {","spotEffect = max( pow( spotEffect, spotLightExponent[ i ] ), 0.0 );","float lDistance = 1.0;","if ( spotLightDistance[ i ] > 0.0 )","lDistance = 1.0 - min( ( length( lVector ) / spotLightDistance[ i ] ), 1.0 );","lVector = normalize( lVector );","float dotProduct = dot( transformedNormal, lVector );","vec3 spotLightWeighting = vec3( max( dotProduct, 0.0 ) );","#ifdef DOUBLE_SIDED","vec3 spotLightWeightingBack = vec3( max( -dotProduct, 0.0 ) );","#ifdef WRAP_AROUND","vec3 spotLightWeightingHalfBack = vec3( max( -0.5 * dotProduct + 0.5, 0.0 ) );","#endif","#endif","#ifdef WRAP_AROUND","vec3 spotLightWeightingHalf = vec3( max( 0.5 * dotProduct + 0.5, 0.0 ) );","spotLightWeighting = mix( spotLightWeighting, spotLightWeightingHalf, wrapRGB );","#ifdef DOUBLE_SIDED","spotLightWeightingBack = mix( spotLightWeightingBack, spotLightWeightingHalfBack, wrapRGB );","#endif","#endif","vLightFront += spotLightColor[ i ] * spotLightWeighting * lDistance * spotEffect;","#ifdef DOUBLE_SIDED","vLightBack += spotLightColor[ i ] * spotLightWeightingBack * lDistance * spotEffect;","#endif","}","}","#endif","#if MAX_HEMI_LIGHTS > 0","for( int i = 0; i < MAX_HEMI_LIGHTS; i ++ ) {","vec4 lDirection = viewMatrix * vec4( hemisphereLightDirection[ i ], 0.0 );","vec3 lVector = normalize( lDirection.xyz );","float dotProduct = dot( transformedNormal, lVector );","float hemiDiffuseWeight = 0.5 * dotProduct + 0.5;","float hemiDiffuseWeightBack = -0.5 * dotProduct + 0.5;","vLightFront += mix( hemisphereLightGroundColor[ i ], hemisphereLightSkyColor[ i ], hemiDiffuseWeight );","#ifdef DOUBLE_SIDED","vLightBack += mix( hemisphereLightGroundColor[ i ], hemisphereLightSkyColor[ i ], hemiDiffuseWeightBack );","#endif","}","#endif","vLightFront = vLightFront * diffuse + ambient * ambientLightColor + emissive;","#ifdef DOUBLE_SIDED","vLightBack = vLightBack * diffuse + ambient * ambientLightColor + emissive;","#endif"].join("\n"),lights_phong_pars_vertex:["#if MAX_SPOT_LIGHTS > 0 || defined( USE_BUMPMAP )","varying vec3 vWorldPosition;","#endif"].join("\n"),lights_phong_vertex:["#if MAX_SPOT_LIGHTS > 0 || defined( USE_BUMPMAP )","vWorldPosition = worldPosition.xyz;","#endif"].join("\n"),lights_phong_pars_fragment:["uniform vec3 ambientLightColor;","#if MAX_DIR_LIGHTS > 0","uniform vec3 directionalLightColor[ MAX_DIR_LIGHTS ];","uniform vec3 directionalLightDirection[ MAX_DIR_LIGHTS ];","#endif","#if MAX_HEMI_LIGHTS > 0","uniform vec3 hemisphereLightSkyColor[ MAX_HEMI_LIGHTS ];","uniform vec3 hemisphereLightGroundColor[ MAX_HEMI_LIGHTS ];","uniform vec3 hemisphereLightDirection[ MAX_HEMI_LIGHTS ];","#endif","#if MAX_POINT_LIGHTS > 0","uniform vec3 pointLightColor[ MAX_POINT_LIGHTS ];","uniform vec3 pointLightPosition[ MAX_POINT_LIGHTS ];","uniform float pointLightDistance[ MAX_POINT_LIGHTS ];","#endif","#if MAX_SPOT_LIGHTS > 0","uniform vec3 spotLightColor[ MAX_SPOT_LIGHTS ];","uniform vec3 spotLightPosition[ MAX_SPOT_LIGHTS ];","uniform vec3 spotLightDirection[ MAX_SPOT_LIGHTS ];","uniform float spotLightAngleCos[ MAX_SPOT_LIGHTS ];","uniform float spotLightExponent[ MAX_SPOT_LIGHTS ];","uniform float spotLightDistance[ MAX_SPOT_LIGHTS ];","#endif","#if MAX_SPOT_LIGHTS > 0 || defined( USE_BUMPMAP )","varying vec3 vWorldPosition;","#endif","#ifdef WRAP_AROUND","uniform vec3 wrapRGB;","#endif","varying vec3 vViewPosition;","varying vec3 vNormal;"].join("\n"),lights_phong_fragment:["vec3 normal = normalize( vNormal );","vec3 viewPosition = normalize( vViewPosition );","#ifdef DOUBLE_SIDED","normal = normal * ( -1.0 + 2.0 * float( gl_FrontFacing ) );","#endif","#ifdef USE_NORMALMAP","normal = perturbNormal2Arb( -vViewPosition, normal );","#elif defined( USE_BUMPMAP )","normal = perturbNormalArb( -vViewPosition, normal, dHdxy_fwd() );","#endif","#if MAX_POINT_LIGHTS > 0","vec3 pointDiffuse = vec3( 0.0 );","vec3 pointSpecular = vec3( 0.0 );","for ( int i = 0; i < MAX_POINT_LIGHTS; i ++ ) {","vec4 lPosition = viewMatrix * vec4( pointLightPosition[ i ], 1.0 );","vec3 lVector = lPosition.xyz + vViewPosition.xyz;","float lDistance = 1.0;","if ( pointLightDistance[ i ] > 0.0 )","lDistance = 1.0 - min( ( length( lVector ) / pointLightDistance[ i ] ), 1.0 );","lVector = normalize( lVector );","float dotProduct = dot( normal, lVector );","#ifdef WRAP_AROUND","float pointDiffuseWeightFull = max( dotProduct, 0.0 );","float pointDiffuseWeightHalf = max( 0.5 * dotProduct + 0.5, 0.0 );","vec3 pointDiffuseWeight = mix( vec3 ( pointDiffuseWeightFull ), vec3( pointDiffuseWeightHalf ), wrapRGB );","#else","float pointDiffuseWeight = max( dotProduct, 0.0 );","#endif","pointDiffuse += diffuse * pointLightColor[ i ] * pointDiffuseWeight * lDistance;","vec3 pointHalfVector = normalize( lVector + viewPosition );","float pointDotNormalHalf = max( dot( normal, pointHalfVector ), 0.0 );","float pointSpecularWeight = specularStrength * max( pow( pointDotNormalHalf, shininess ), 0.0 );","float specularNormalization = ( shininess + 2.0001 ) / 8.0;","vec3 schlick = specular + vec3( 1.0 - specular ) * pow( max( 1.0 - dot( lVector, pointHalfVector ), 0.0 ), 5.0 );","pointSpecular += schlick * pointLightColor[ i ] * pointSpecularWeight * pointDiffuseWeight * lDistance * specularNormalization;","}","#endif","#if MAX_SPOT_LIGHTS > 0","vec3 spotDiffuse = vec3( 0.0 );","vec3 spotSpecular = vec3( 0.0 );","for ( int i = 0; i < MAX_SPOT_LIGHTS; i ++ ) {","vec4 lPosition = viewMatrix * vec4( spotLightPosition[ i ], 1.0 );","vec3 lVector = lPosition.xyz + vViewPosition.xyz;","float lDistance = 1.0;","if ( spotLightDistance[ i ] > 0.0 )","lDistance = 1.0 - min( ( length( lVector ) / spotLightDistance[ i ] ), 1.0 );","lVector = normalize( lVector );","float spotEffect = dot( spotLightDirection[ i ], normalize( spotLightPosition[ i ] - vWorldPosition ) );","if ( spotEffect > spotLightAngleCos[ i ] ) {","spotEffect = max( pow( spotEffect, spotLightExponent[ i ] ), 0.0 );","float dotProduct = dot( normal, lVector );","#ifdef WRAP_AROUND","float spotDiffuseWeightFull = max( dotProduct, 0.0 );","float spotDiffuseWeightHalf = max( 0.5 * dotProduct + 0.5, 0.0 );","vec3 spotDiffuseWeight = mix( vec3 ( spotDiffuseWeightFull ), vec3( spotDiffuseWeightHalf ), wrapRGB );","#else","float spotDiffuseWeight = max( dotProduct, 0.0 );","#endif","spotDiffuse += diffuse * spotLightColor[ i ] * spotDiffuseWeight * lDistance * spotEffect;","vec3 spotHalfVector = normalize( lVector + viewPosition );","float spotDotNormalHalf = max( dot( normal, spotHalfVector ), 0.0 );","float spotSpecularWeight = specularStrength * max( pow( spotDotNormalHalf, shininess ), 0.0 );","float specularNormalization = ( shininess + 2.0001 ) / 8.0;","vec3 schlick = specular + vec3( 1.0 - specular ) * pow( max( 1.0 - dot( lVector, spotHalfVector ), 0.0 ), 5.0 );","spotSpecular += schlick * spotLightColor[ i ] * spotSpecularWeight * spotDiffuseWeight * lDistance * specularNormalization * spotEffect;","}","}","#endif","#if MAX_DIR_LIGHTS > 0","vec3 dirDiffuse = vec3( 0.0 );","vec3 dirSpecular = vec3( 0.0 );","for( int i = 0; i < MAX_DIR_LIGHTS; i ++ ) {","vec4 lDirection = viewMatrix * vec4( directionalLightDirection[ i ], 0.0 );","vec3 dirVector = normalize( lDirection.xyz );","float dotProduct = dot( normal, dirVector );","#ifdef WRAP_AROUND","float dirDiffuseWeightFull = max( dotProduct, 0.0 );","float dirDiffuseWeightHalf = max( 0.5 * dotProduct + 0.5, 0.0 );","vec3 dirDiffuseWeight = mix( vec3( dirDiffuseWeightFull ), vec3( dirDiffuseWeightHalf ), wrapRGB );","#else","float dirDiffuseWeight = max( dotProduct, 0.0 );","#endif","dirDiffuse += diffuse * directionalLightColor[ i ] * dirDiffuseWeight;","vec3 dirHalfVector = normalize( dirVector + viewPosition );","float dirDotNormalHalf = max( dot( normal, dirHalfVector ), 0.0 );","float dirSpecularWeight = specularStrength * max( pow( dirDotNormalHalf, shininess ), 0.0 );","float specularNormalization = ( shininess + 2.0001 ) / 8.0;","vec3 schlick = specular + vec3( 1.0 - specular ) * pow( max( 1.0 - dot( dirVector, dirHalfVector ), 0.0 ), 5.0 );","dirSpecular += schlick * directionalLightColor[ i ] * dirSpecularWeight * dirDiffuseWeight * specularNormalization;","}","#endif","#if MAX_HEMI_LIGHTS > 0","vec3 hemiDiffuse = vec3( 0.0 );","vec3 hemiSpecular = vec3( 0.0 );","for( int i = 0; i < MAX_HEMI_LIGHTS; i ++ ) {","vec4 lDirection = viewMatrix * vec4( hemisphereLightDirection[ i ], 0.0 );","vec3 lVector = normalize( lDirection.xyz );","float dotProduct = dot( normal, lVector );","float hemiDiffuseWeight = 0.5 * dotProduct + 0.5;","vec3 hemiColor = mix( hemisphereLightGroundColor[ i ], hemisphereLightSkyColor[ i ], hemiDiffuseWeight );","hemiDiffuse += diffuse * hemiColor;","vec3 hemiHalfVectorSky = normalize( lVector + viewPosition );","float hemiDotNormalHalfSky = 0.5 * dot( normal, hemiHalfVectorSky ) + 0.5;","float hemiSpecularWeightSky = specularStrength * max( pow( hemiDotNormalHalfSky, shininess ), 0.0 );","vec3 lVectorGround = -lVector;","vec3 hemiHalfVectorGround = normalize( lVectorGround + viewPosition );","float hemiDotNormalHalfGround = 0.5 * dot( normal, hemiHalfVectorGround ) + 0.5;","float hemiSpecularWeightGround = specularStrength * max( pow( hemiDotNormalHalfGround, shininess ), 0.0 );","float dotProductGround = dot( normal, lVectorGround );","float specularNormalization = ( shininess + 2.0001 ) / 8.0;","vec3 schlickSky = specular + vec3( 1.0 - specular ) * pow( max( 1.0 - dot( lVector, hemiHalfVectorSky ), 0.0 ), 5.0 );","vec3 schlickGround = specular + vec3( 1.0 - specular ) * pow( max( 1.0 - dot( lVectorGround, hemiHalfVectorGround ), 0.0 ), 5.0 );","hemiSpecular += hemiColor * specularNormalization * ( schlickSky * hemiSpecularWeightSky * max( dotProduct, 0.0 ) + schlickGround * hemiSpecularWeightGround * max( dotProductGround, 0.0 ) );","}","#endif","vec3 totalDiffuse = vec3( 0.0 );","vec3 totalSpecular = vec3( 0.0 );","#if MAX_DIR_LIGHTS > 0","totalDiffuse += dirDiffuse;","totalSpecular += dirSpecular;","#endif","#if MAX_HEMI_LIGHTS > 0","totalDiffuse += hemiDiffuse;","totalSpecular += hemiSpecular;","#endif","#if MAX_POINT_LIGHTS > 0","totalDiffuse += pointDiffuse;","totalSpecular += pointSpecular;","#endif","#if MAX_SPOT_LIGHTS > 0","totalDiffuse += spotDiffuse;","totalSpecular += spotSpecular;","#endif","#ifdef METAL","gl_FragColor.xyz = gl_FragColor.xyz * ( emissive + totalDiffuse + ambientLightColor * ambient + totalSpecular );","#else","gl_FragColor.xyz = gl_FragColor.xyz * ( emissive + totalDiffuse + ambientLightColor * ambient ) + totalSpecular;","#endif"].join("\n"),color_pars_fragment:["#ifdef USE_COLOR","varying vec3 vColor;","#endif"].join("\n"),color_fragment:["#ifdef USE_COLOR","gl_FragColor = gl_FragColor * vec4( vColor, 1.0 );","#endif"].join("\n"),color_pars_vertex:["#ifdef USE_COLOR","varying vec3 vColor;","#endif"].join("\n"),color_vertex:["#ifdef USE_COLOR","#ifdef GAMMA_INPUT","vColor = color * color;","#else","vColor = color;","#endif","#endif"].join("\n"),skinning_pars_vertex:["#ifdef USE_SKINNING","#ifdef BONE_TEXTURE","uniform sampler2D boneTexture;","uniform int boneTextureWidth;","uniform int boneTextureHeight;","mat4 getBoneMatrix( const in float i ) {","float j = i * 4.0;","float x = mod( j, float( boneTextureWidth ) );","float y = floor( j / float( boneTextureWidth ) );","float dx = 1.0 / float( boneTextureWidth );","float dy = 1.0 / float( boneTextureHeight );","y = dy * ( y + 0.5 );","vec4 v1 = texture2D( boneTexture, vec2( dx * ( x + 0.5 ), y ) );","vec4 v2 = texture2D( boneTexture, vec2( dx * ( x + 1.5 ), y ) );","vec4 v3 = texture2D( boneTexture, vec2( dx * ( x + 2.5 ), y ) );","vec4 v4 = texture2D( boneTexture, vec2( dx * ( x + 3.5 ), y ) );","mat4 bone = mat4( v1, v2, v3, v4 );","return bone;","}","#else","uniform mat4 boneGlobalMatrices[ MAX_BONES ];","mat4 getBoneMatrix( const in float i ) {","mat4 bone = boneGlobalMatrices[ int(i) ];","return bone;","}","#endif","#endif"].join("\n"),skinbase_vertex:["#ifdef USE_SKINNING","mat4 boneMatX = getBoneMatrix( skinIndex.x );","mat4 boneMatY = getBoneMatrix( skinIndex.y );","mat4 boneMatZ = getBoneMatrix( skinIndex.z );","mat4 boneMatW = getBoneMatrix( skinIndex.w );","#endif"].join("\n"),skinning_vertex:["#ifdef USE_SKINNING","#ifdef USE_MORPHTARGETS","vec4 skinVertex = vec4( morphed, 1.0 );","#else","vec4 skinVertex = vec4( position, 1.0 );","#endif","vec4 skinned = boneMatX * skinVertex * skinWeight.x;","skinned += boneMatY * skinVertex * skinWeight.y;","skinned += boneMatZ * skinVertex * skinWeight.z;","skinned += boneMatW * skinVertex * skinWeight.w;","#endif"].join("\n"),morphtarget_pars_vertex:["#ifdef USE_MORPHTARGETS","#ifndef USE_MORPHNORMALS","uniform float morphTargetInfluences[ 8 ];","#else","uniform float morphTargetInfluences[ 4 ];","#endif","#endif"].join("\n"),morphtarget_vertex:["#ifdef USE_MORPHTARGETS","vec3 morphed = vec3( 0.0 );","morphed += ( morphTarget0 - position ) * morphTargetInfluences[ 0 ];","morphed += ( morphTarget1 - position ) * morphTargetInfluences[ 1 ];","morphed += ( morphTarget2 - position ) * morphTargetInfluences[ 2 ];","morphed += ( morphTarget3 - position ) * morphTargetInfluences[ 3 ];","#ifndef USE_MORPHNORMALS","morphed += ( morphTarget4 - position ) * morphTargetInfluences[ 4 ];","morphed += ( morphTarget5 - position ) * morphTargetInfluences[ 5 ];","morphed += ( morphTarget6 - position ) * morphTargetInfluences[ 6 ];","morphed += ( morphTarget7 - position ) * morphTargetInfluences[ 7 ];","#endif","morphed += position;","#endif"].join("\n"),default_vertex:["vec4 mvPosition;","#ifdef USE_SKINNING","mvPosition = modelViewMatrix * skinned;","#endif","#if !defined( USE_SKINNING ) && defined( USE_MORPHTARGETS )","mvPosition = modelViewMatrix * vec4( morphed, 1.0 );","#endif","#if !defined( USE_SKINNING ) && ! defined( USE_MORPHTARGETS )","mvPosition = modelViewMatrix * vec4( position, 1.0 );","#endif","gl_Position = projectionMatrix * mvPosition;"].join("\n"),morphnormal_vertex:["#ifdef USE_MORPHNORMALS","vec3 morphedNormal = vec3( 0.0 );","morphedNormal += ( morphNormal0 - normal ) * morphTargetInfluences[ 0 ];","morphedNormal += ( morphNormal1 - normal ) * morphTargetInfluences[ 1 ];","morphedNormal += ( morphNormal2 - normal ) * morphTargetInfluences[ 2 ];","morphedNormal += ( morphNormal3 - normal ) * morphTargetInfluences[ 3 ];","morphedNormal += normal;","#endif"].join("\n"),skinnormal_vertex:["#ifdef USE_SKINNING","mat4 skinMatrix = skinWeight.x * boneMatX;","skinMatrix += skinWeight.y * boneMatY;","#ifdef USE_MORPHNORMALS","vec4 skinnedNormal = skinMatrix * vec4( morphedNormal, 0.0 );","#else","vec4 skinnedNormal = skinMatrix * vec4( normal, 0.0 );","#endif","#endif"].join("\n"),defaultnormal_vertex:["vec3 objectNormal;","#ifdef USE_SKINNING","objectNormal = skinnedNormal.xyz;","#endif","#if !defined( USE_SKINNING ) && defined( USE_MORPHNORMALS )","objectNormal = morphedNormal;","#endif","#if !defined( USE_SKINNING ) && ! defined( USE_MORPHNORMALS )","objectNormal = normal;","#endif","#ifdef FLIP_SIDED","objectNormal = -objectNormal;","#endif","vec3 transformedNormal = normalMatrix * objectNormal;"].join("\n"),shadowmap_pars_fragment:["#ifdef USE_SHADOWMAP","uniform sampler2D shadowMap[ MAX_SHADOWS ];","uniform vec2 shadowMapSize[ MAX_SHADOWS ];","uniform float shadowDarkness[ MAX_SHADOWS ];","uniform float shadowBias[ MAX_SHADOWS ];","varying vec4 vShadowCoord[ MAX_SHADOWS ];","float unpackDepth( const in vec4 rgba_depth ) {","const vec4 bit_shift = vec4( 1.0 / ( 256.0 * 256.0 * 256.0 ), 1.0 / ( 256.0 * 256.0 ), 1.0 / 256.0, 1.0 );","float depth = dot( rgba_depth, bit_shift );","return depth;","}","#endif"].join("\n"),shadowmap_fragment:["#ifdef USE_SHADOWMAP","#ifdef SHADOWMAP_DEBUG","vec3 frustumColors[3];","frustumColors[0] = vec3( 1.0, 0.5, 0.0 );","frustumColors[1] = vec3( 0.0, 1.0, 0.8 );","frustumColors[2] = vec3( 0.0, 0.5, 1.0 );","#endif","#ifdef SHADOWMAP_CASCADE","int inFrustumCount = 0;","#endif","float fDepth;","vec3 shadowColor = vec3( 1.0 );","for( int i = 0; i < MAX_SHADOWS; i ++ ) {","vec3 shadowCoord = vShadowCoord[ i ].xyz / vShadowCoord[ i ].w;","bvec4 inFrustumVec = bvec4 ( shadowCoord.x >= 0.0, shadowCoord.x <= 1.0, shadowCoord.y >= 0.0, shadowCoord.y <= 1.0 );","bool inFrustum = all( inFrustumVec );","#ifdef SHADOWMAP_CASCADE","inFrustumCount += int( inFrustum );","bvec3 frustumTestVec = bvec3( inFrustum, inFrustumCount == 1, shadowCoord.z <= 1.0 );","#else","bvec2 frustumTestVec = bvec2( inFrustum, shadowCoord.z <= 1.0 );","#endif","bool frustumTest = all( frustumTestVec );","if ( frustumTest ) {","shadowCoord.z += shadowBias[ i ];","#if defined( SHADOWMAP_TYPE_PCF )","float shadow = 0.0;","const float shadowDelta = 1.0 / 9.0;","float xPixelOffset = 1.0 / shadowMapSize[ i ].x;","float yPixelOffset = 1.0 / shadowMapSize[ i ].y;","float dx0 = -1.25 * xPixelOffset;","float dy0 = -1.25 * yPixelOffset;","float dx1 = 1.25 * xPixelOffset;","float dy1 = 1.25 * yPixelOffset;","fDepth = unpackDepth( texture2D( shadowMap[ i ], shadowCoord.xy + vec2( dx0, dy0 ) ) );","if ( fDepth < shadowCoord.z ) shadow += shadowDelta;","fDepth = unpackDepth( texture2D( shadowMap[ i ], shadowCoord.xy + vec2( 0.0, dy0 ) ) );","if ( fDepth < shadowCoord.z ) shadow += shadowDelta;","fDepth = unpackDepth( texture2D( shadowMap[ i ], shadowCoord.xy + vec2( dx1, dy0 ) ) );","if ( fDepth < shadowCoord.z ) shadow += shadowDelta;","fDepth = unpackDepth( texture2D( shadowMap[ i ], shadowCoord.xy + vec2( dx0, 0.0 ) ) );","if ( fDepth < shadowCoord.z ) shadow += shadowDelta;","fDepth = unpackDepth( texture2D( shadowMap[ i ], shadowCoord.xy ) );","if ( fDepth < shadowCoord.z ) shadow += shadowDelta;","fDepth = unpackDepth( texture2D( shadowMap[ i ], shadowCoord.xy + vec2( dx1, 0.0 ) ) );","if ( fDepth < shadowCoord.z ) shadow += shadowDelta;","fDepth = unpackDepth( texture2D( shadowMap[ i ], shadowCoord.xy + vec2( dx0, dy1 ) ) );","if ( fDepth < shadowCoord.z ) shadow += shadowDelta;","fDepth = unpackDepth( texture2D( shadowMap[ i ], shadowCoord.xy + vec2( 0.0, dy1 ) ) );","if ( fDepth < shadowCoord.z ) shadow += shadowDelta;","fDepth = unpackDepth( texture2D( shadowMap[ i ], shadowCoord.xy + vec2( dx1, dy1 ) ) );","if ( fDepth < shadowCoord.z ) shadow += shadowDelta;","shadowColor = shadowColor * vec3( ( 1.0 - shadowDarkness[ i ] * shadow ) );","#elif defined( SHADOWMAP_TYPE_PCF_SOFT )","float shadow = 0.0;","float xPixelOffset = 1.0 / shadowMapSize[ i ].x;","float yPixelOffset = 1.0 / shadowMapSize[ i ].y;","float dx0 = -1.0 * xPixelOffset;","float dy0 = -1.0 * yPixelOffset;","float dx1 = 1.0 * xPixelOffset;","float dy1 = 1.0 * yPixelOffset;","mat3 shadowKernel;","mat3 depthKernel;","depthKernel[0][0] = unpackDepth( texture2D( shadowMap[ i ], shadowCoord.xy + vec2( dx0, dy0 ) ) );","depthKernel[0][1] = unpackDepth( texture2D( shadowMap[ i ], shadowCoord.xy + vec2( dx0, 0.0 ) ) );","depthKernel[0][2] = unpackDepth( texture2D( shadowMap[ i ], shadowCoord.xy + vec2( dx0, dy1 ) ) );","depthKernel[1][0] = unpackDepth( texture2D( shadowMap[ i ], shadowCoord.xy + vec2( 0.0, dy0 ) ) );","depthKernel[1][1] = unpackDepth( texture2D( shadowMap[ i ], shadowCoord.xy ) );","depthKernel[1][2] = unpackDepth( texture2D( shadowMap[ i ], shadowCoord.xy + vec2( 0.0, dy1 ) ) );","depthKernel[2][0] = unpackDepth( texture2D( shadowMap[ i ], shadowCoord.xy + vec2( dx1, dy0 ) ) );","depthKernel[2][1] = unpackDepth( texture2D( shadowMap[ i ], shadowCoord.xy + vec2( dx1, 0.0 ) ) );","depthKernel[2][2] = unpackDepth( texture2D( shadowMap[ i ], shadowCoord.xy + vec2( dx1, dy1 ) ) );","vec3 shadowZ = vec3( shadowCoord.z );","shadowKernel[0] = vec3(lessThan(depthKernel[0], shadowZ ));","shadowKernel[0] *= vec3(0.25);","shadowKernel[1] = vec3(lessThan(depthKernel[1], shadowZ ));","shadowKernel[1] *= vec3(0.25);","shadowKernel[2] = vec3(lessThan(depthKernel[2], shadowZ ));","shadowKernel[2] *= vec3(0.25);","vec2 fractionalCoord = 1.0 - fract( shadowCoord.xy * shadowMapSize[i].xy );","shadowKernel[0] = mix( shadowKernel[1], shadowKernel[0], fractionalCoord.x );","shadowKernel[1] = mix( shadowKernel[2], shadowKernel[1], fractionalCoord.x );","vec4 shadowValues;","shadowValues.x = mix( shadowKernel[0][1], shadowKernel[0][0], fractionalCoord.y );","shadowValues.y = mix( shadowKernel[0][2], shadowKernel[0][1], fractionalCoord.y );","shadowValues.z = mix( shadowKernel[1][1], shadowKernel[1][0], fractionalCoord.y );","shadowValues.w = mix( shadowKernel[1][2], shadowKernel[1][1], fractionalCoord.y );","shadow = dot( shadowValues, vec4( 1.0 ) );","shadowColor = shadowColor * vec3( ( 1.0 - shadowDarkness[ i ] * shadow ) );","#else","vec4 rgbaDepth = texture2D( shadowMap[ i ], shadowCoord.xy );","float fDepth = unpackDepth( rgbaDepth );","if ( fDepth < shadowCoord.z )","shadowColor = shadowColor * vec3( 1.0 - shadowDarkness[ i ] );","#endif","}","#ifdef SHADOWMAP_DEBUG","#ifdef SHADOWMAP_CASCADE","if ( inFrustum && inFrustumCount == 1 ) gl_FragColor.xyz *= frustumColors[ i ];","#else","if ( inFrustum ) gl_FragColor.xyz *= frustumColors[ i ];","#endif","#endif","}","#ifdef GAMMA_OUTPUT","shadowColor *= shadowColor;","#endif","gl_FragColor.xyz = gl_FragColor.xyz * shadowColor;","#endif"].join("\n"),shadowmap_pars_vertex:["#ifdef USE_SHADOWMAP","varying vec4 vShadowCoord[ MAX_SHADOWS ];","uniform mat4 shadowMatrix[ MAX_SHADOWS ];","#endif"].join("\n"),shadowmap_vertex:["#ifdef USE_SHADOWMAP","for( int i = 0; i < MAX_SHADOWS; i ++ ) {","vShadowCoord[ i ] = shadowMatrix[ i ] * worldPosition;","}","#endif"].join("\n"),alphatest_fragment:["#ifdef ALPHATEST","if ( gl_FragColor.a < ALPHATEST ) discard;","#endif"].join("\n"),linear_to_gamma_fragment:["#ifdef GAMMA_OUTPUT","gl_FragColor.xyz = sqrt( gl_FragColor.xyz );","#endif"].join("\n")},a.UniformsUtils={merge:function(a){var b,c,d,e={}; +for(b=0;b dashSize ) {","discard;","}","gl_FragColor = vec4( diffuse, opacity );",a.ShaderChunk.color_fragment,a.ShaderChunk.fog_fragment,"}"].join("\n")},depth:{uniforms:{mNear:{type:"f",value:1},mFar:{type:"f",value:2e3},opacity:{type:"f",value:1}},vertexShader:["void main() {","gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );","}"].join("\n"),fragmentShader:["uniform float mNear;","uniform float mFar;","uniform float opacity;","void main() {","float depth = gl_FragCoord.z / gl_FragCoord.w;","float color = 1.0 - smoothstep( mNear, mFar, depth );","gl_FragColor = vec4( vec3( color ), opacity );","}"].join("\n")},normal:{uniforms:{opacity:{type:"f",value:1}},vertexShader:["varying vec3 vNormal;",a.ShaderChunk.morphtarget_pars_vertex,"void main() {","vNormal = normalize( normalMatrix * normal );",a.ShaderChunk.morphtarget_vertex,a.ShaderChunk.default_vertex,"}"].join("\n"),fragmentShader:["uniform float opacity;","varying vec3 vNormal;","void main() {","gl_FragColor = vec4( 0.5 * normalize( vNormal ) + 0.5, opacity );","}"].join("\n")},normalmap:{uniforms:a.UniformsUtils.merge([a.UniformsLib.fog,a.UniformsLib.lights,a.UniformsLib.shadowmap,{enableAO:{type:"i",value:0},enableDiffuse:{type:"i",value:0},enableSpecular:{type:"i",value:0},enableReflection:{type:"i",value:0},enableDisplacement:{type:"i",value:0},tDisplacement:{type:"t",value:null},tDiffuse:{type:"t",value:null},tCube:{type:"t",value:null},tNormal:{type:"t",value:null},tSpecular:{type:"t",value:null},tAO:{type:"t",value:null},uNormalScale:{type:"v2",value:new a.Vector2(1,1)},uDisplacementBias:{type:"f",value:0},uDisplacementScale:{type:"f",value:1},diffuse:{type:"c",value:new a.Color(16777215)},specular:{type:"c",value:new a.Color(1118481)},ambient:{type:"c",value:new a.Color(16777215)},shininess:{type:"f",value:30},opacity:{type:"f",value:1},useRefract:{type:"i",value:0},refractionRatio:{type:"f",value:.98},reflectivity:{type:"f",value:.5},uOffset:{type:"v2",value:new a.Vector2(0,0)},uRepeat:{type:"v2",value:new a.Vector2(1,1)},wrapRGB:{type:"v3",value:new a.Vector3(1,1,1)}}]),fragmentShader:["uniform vec3 ambient;","uniform vec3 diffuse;","uniform vec3 specular;","uniform float shininess;","uniform float opacity;","uniform bool enableDiffuse;","uniform bool enableSpecular;","uniform bool enableAO;","uniform bool enableReflection;","uniform sampler2D tDiffuse;","uniform sampler2D tNormal;","uniform sampler2D tSpecular;","uniform sampler2D tAO;","uniform samplerCube tCube;","uniform vec2 uNormalScale;","uniform bool useRefract;","uniform float refractionRatio;","uniform float reflectivity;","varying vec3 vTangent;","varying vec3 vBinormal;","varying vec3 vNormal;","varying vec2 vUv;","uniform vec3 ambientLightColor;","#if MAX_DIR_LIGHTS > 0","uniform vec3 directionalLightColor[ MAX_DIR_LIGHTS ];","uniform vec3 directionalLightDirection[ MAX_DIR_LIGHTS ];","#endif","#if MAX_HEMI_LIGHTS > 0","uniform vec3 hemisphereLightSkyColor[ MAX_HEMI_LIGHTS ];","uniform vec3 hemisphereLightGroundColor[ MAX_HEMI_LIGHTS ];","uniform vec3 hemisphereLightDirection[ MAX_HEMI_LIGHTS ];","#endif","#if MAX_POINT_LIGHTS > 0","uniform vec3 pointLightColor[ MAX_POINT_LIGHTS ];","uniform vec3 pointLightPosition[ MAX_POINT_LIGHTS ];","uniform float pointLightDistance[ MAX_POINT_LIGHTS ];","#endif","#if MAX_SPOT_LIGHTS > 0","uniform vec3 spotLightColor[ MAX_SPOT_LIGHTS ];","uniform vec3 spotLightPosition[ MAX_SPOT_LIGHTS ];","uniform vec3 spotLightDirection[ MAX_SPOT_LIGHTS ];","uniform float spotLightAngleCos[ MAX_SPOT_LIGHTS ];","uniform float spotLightExponent[ MAX_SPOT_LIGHTS ];","uniform float spotLightDistance[ MAX_SPOT_LIGHTS ];","#endif","#ifdef WRAP_AROUND","uniform vec3 wrapRGB;","#endif","varying vec3 vWorldPosition;","varying vec3 vViewPosition;",a.ShaderChunk.shadowmap_pars_fragment,a.ShaderChunk.fog_pars_fragment,"void main() {","gl_FragColor = vec4( vec3( 1.0 ), opacity );","vec3 specularTex = vec3( 1.0 );","vec3 normalTex = texture2D( tNormal, vUv ).xyz * 2.0 - 1.0;","normalTex.xy *= uNormalScale;","normalTex = normalize( normalTex );","if( enableDiffuse ) {","#ifdef GAMMA_INPUT","vec4 texelColor = texture2D( tDiffuse, vUv );","texelColor.xyz *= texelColor.xyz;","gl_FragColor = gl_FragColor * texelColor;","#else","gl_FragColor = gl_FragColor * texture2D( tDiffuse, vUv );","#endif","}","if( enableAO ) {","#ifdef GAMMA_INPUT","vec4 aoColor = texture2D( tAO, vUv );","aoColor.xyz *= aoColor.xyz;","gl_FragColor.xyz = gl_FragColor.xyz * aoColor.xyz;","#else","gl_FragColor.xyz = gl_FragColor.xyz * texture2D( tAO, vUv ).xyz;","#endif","}","if( enableSpecular )","specularTex = texture2D( tSpecular, vUv ).xyz;","mat3 tsb = mat3( normalize( vTangent ), normalize( vBinormal ), normalize( vNormal ) );","vec3 finalNormal = tsb * normalTex;","#ifdef FLIP_SIDED","finalNormal = -finalNormal;","#endif","vec3 normal = normalize( finalNormal );","vec3 viewPosition = normalize( vViewPosition );","#if MAX_POINT_LIGHTS > 0","vec3 pointDiffuse = vec3( 0.0 );","vec3 pointSpecular = vec3( 0.0 );","for ( int i = 0; i < MAX_POINT_LIGHTS; i ++ ) {","vec4 lPosition = viewMatrix * vec4( pointLightPosition[ i ], 1.0 );","vec3 pointVector = lPosition.xyz + vViewPosition.xyz;","float pointDistance = 1.0;","if ( pointLightDistance[ i ] > 0.0 )","pointDistance = 1.0 - min( ( length( pointVector ) / pointLightDistance[ i ] ), 1.0 );","pointVector = normalize( pointVector );","#ifdef WRAP_AROUND","float pointDiffuseWeightFull = max( dot( normal, pointVector ), 0.0 );","float pointDiffuseWeightHalf = max( 0.5 * dot( normal, pointVector ) + 0.5, 0.0 );","vec3 pointDiffuseWeight = mix( vec3 ( pointDiffuseWeightFull ), vec3( pointDiffuseWeightHalf ), wrapRGB );","#else","float pointDiffuseWeight = max( dot( normal, pointVector ), 0.0 );","#endif","pointDiffuse += pointDistance * pointLightColor[ i ] * diffuse * pointDiffuseWeight;","vec3 pointHalfVector = normalize( pointVector + viewPosition );","float pointDotNormalHalf = max( dot( normal, pointHalfVector ), 0.0 );","float pointSpecularWeight = specularTex.r * max( pow( pointDotNormalHalf, shininess ), 0.0 );","float specularNormalization = ( shininess + 2.0001 ) / 8.0;","vec3 schlick = specular + vec3( 1.0 - specular ) * pow( 1.0 - dot( pointVector, pointHalfVector ), 5.0 );","pointSpecular += schlick * pointLightColor[ i ] * pointSpecularWeight * pointDiffuseWeight * pointDistance * specularNormalization;","}","#endif","#if MAX_SPOT_LIGHTS > 0","vec3 spotDiffuse = vec3( 0.0 );","vec3 spotSpecular = vec3( 0.0 );","for ( int i = 0; i < MAX_SPOT_LIGHTS; i ++ ) {","vec4 lPosition = viewMatrix * vec4( spotLightPosition[ i ], 1.0 );","vec3 spotVector = lPosition.xyz + vViewPosition.xyz;","float spotDistance = 1.0;","if ( spotLightDistance[ i ] > 0.0 )","spotDistance = 1.0 - min( ( length( spotVector ) / spotLightDistance[ i ] ), 1.0 );","spotVector = normalize( spotVector );","float spotEffect = dot( spotLightDirection[ i ], normalize( spotLightPosition[ i ] - vWorldPosition ) );","if ( spotEffect > spotLightAngleCos[ i ] ) {","spotEffect = max( pow( spotEffect, spotLightExponent[ i ] ), 0.0 );","#ifdef WRAP_AROUND","float spotDiffuseWeightFull = max( dot( normal, spotVector ), 0.0 );","float spotDiffuseWeightHalf = max( 0.5 * dot( normal, spotVector ) + 0.5, 0.0 );","vec3 spotDiffuseWeight = mix( vec3 ( spotDiffuseWeightFull ), vec3( spotDiffuseWeightHalf ), wrapRGB );","#else","float spotDiffuseWeight = max( dot( normal, spotVector ), 0.0 );","#endif","spotDiffuse += spotDistance * spotLightColor[ i ] * diffuse * spotDiffuseWeight * spotEffect;","vec3 spotHalfVector = normalize( spotVector + viewPosition );","float spotDotNormalHalf = max( dot( normal, spotHalfVector ), 0.0 );","float spotSpecularWeight = specularTex.r * max( pow( spotDotNormalHalf, shininess ), 0.0 );","float specularNormalization = ( shininess + 2.0001 ) / 8.0;","vec3 schlick = specular + vec3( 1.0 - specular ) * pow( 1.0 - dot( spotVector, spotHalfVector ), 5.0 );","spotSpecular += schlick * spotLightColor[ i ] * spotSpecularWeight * spotDiffuseWeight * spotDistance * specularNormalization * spotEffect;","}","}","#endif","#if MAX_DIR_LIGHTS > 0","vec3 dirDiffuse = vec3( 0.0 );","vec3 dirSpecular = vec3( 0.0 );","for( int i = 0; i < MAX_DIR_LIGHTS; i++ ) {","vec4 lDirection = viewMatrix * vec4( directionalLightDirection[ i ], 0.0 );","vec3 dirVector = normalize( lDirection.xyz );","#ifdef WRAP_AROUND","float directionalLightWeightingFull = max( dot( normal, dirVector ), 0.0 );","float directionalLightWeightingHalf = max( 0.5 * dot( normal, dirVector ) + 0.5, 0.0 );","vec3 dirDiffuseWeight = mix( vec3( directionalLightWeightingFull ), vec3( directionalLightWeightingHalf ), wrapRGB );","#else","float dirDiffuseWeight = max( dot( normal, dirVector ), 0.0 );","#endif","dirDiffuse += directionalLightColor[ i ] * diffuse * dirDiffuseWeight;","vec3 dirHalfVector = normalize( dirVector + viewPosition );","float dirDotNormalHalf = max( dot( normal, dirHalfVector ), 0.0 );","float dirSpecularWeight = specularTex.r * max( pow( dirDotNormalHalf, shininess ), 0.0 );","float specularNormalization = ( shininess + 2.0001 ) / 8.0;","vec3 schlick = specular + vec3( 1.0 - specular ) * pow( 1.0 - dot( dirVector, dirHalfVector ), 5.0 );","dirSpecular += schlick * directionalLightColor[ i ] * dirSpecularWeight * dirDiffuseWeight * specularNormalization;","}","#endif","#if MAX_HEMI_LIGHTS > 0","vec3 hemiDiffuse = vec3( 0.0 );","vec3 hemiSpecular = vec3( 0.0 );","for( int i = 0; i < MAX_HEMI_LIGHTS; i ++ ) {","vec4 lDirection = viewMatrix * vec4( hemisphereLightDirection[ i ], 0.0 );","vec3 lVector = normalize( lDirection.xyz );","float dotProduct = dot( normal, lVector );","float hemiDiffuseWeight = 0.5 * dotProduct + 0.5;","vec3 hemiColor = mix( hemisphereLightGroundColor[ i ], hemisphereLightSkyColor[ i ], hemiDiffuseWeight );","hemiDiffuse += diffuse * hemiColor;","vec3 hemiHalfVectorSky = normalize( lVector + viewPosition );","float hemiDotNormalHalfSky = 0.5 * dot( normal, hemiHalfVectorSky ) + 0.5;","float hemiSpecularWeightSky = specularTex.r * max( pow( hemiDotNormalHalfSky, shininess ), 0.0 );","vec3 lVectorGround = -lVector;","vec3 hemiHalfVectorGround = normalize( lVectorGround + viewPosition );","float hemiDotNormalHalfGround = 0.5 * dot( normal, hemiHalfVectorGround ) + 0.5;","float hemiSpecularWeightGround = specularTex.r * max( pow( hemiDotNormalHalfGround, shininess ), 0.0 );","float dotProductGround = dot( normal, lVectorGround );","float specularNormalization = ( shininess + 2.0001 ) / 8.0;","vec3 schlickSky = specular + vec3( 1.0 - specular ) * pow( 1.0 - dot( lVector, hemiHalfVectorSky ), 5.0 );","vec3 schlickGround = specular + vec3( 1.0 - specular ) * pow( 1.0 - dot( lVectorGround, hemiHalfVectorGround ), 5.0 );","hemiSpecular += hemiColor * specularNormalization * ( schlickSky * hemiSpecularWeightSky * max( dotProduct, 0.0 ) + schlickGround * hemiSpecularWeightGround * max( dotProductGround, 0.0 ) );","}","#endif","vec3 totalDiffuse = vec3( 0.0 );","vec3 totalSpecular = vec3( 0.0 );","#if MAX_DIR_LIGHTS > 0","totalDiffuse += dirDiffuse;","totalSpecular += dirSpecular;","#endif","#if MAX_HEMI_LIGHTS > 0","totalDiffuse += hemiDiffuse;","totalSpecular += hemiSpecular;","#endif","#if MAX_POINT_LIGHTS > 0","totalDiffuse += pointDiffuse;","totalSpecular += pointSpecular;","#endif","#if MAX_SPOT_LIGHTS > 0","totalDiffuse += spotDiffuse;","totalSpecular += spotSpecular;","#endif","#ifdef METAL","gl_FragColor.xyz = gl_FragColor.xyz * ( totalDiffuse + ambientLightColor * ambient + totalSpecular );","#else","gl_FragColor.xyz = gl_FragColor.xyz * ( totalDiffuse + ambientLightColor * ambient ) + totalSpecular;","#endif","if ( enableReflection ) {","vec3 vReflect;","vec3 cameraToVertex = normalize( vWorldPosition - cameraPosition );","if ( useRefract ) {","vReflect = refract( cameraToVertex, normal, refractionRatio );","} else {","vReflect = reflect( cameraToVertex, normal );","}","vec4 cubeColor = textureCube( tCube, vec3( -vReflect.x, vReflect.yz ) );","#ifdef GAMMA_INPUT","cubeColor.xyz *= cubeColor.xyz;","#endif","gl_FragColor.xyz = mix( gl_FragColor.xyz, cubeColor.xyz, specularTex.r * reflectivity );","}",a.ShaderChunk.shadowmap_fragment,a.ShaderChunk.linear_to_gamma_fragment,a.ShaderChunk.fog_fragment,"}"].join("\n"),vertexShader:["attribute vec4 tangent;","uniform vec2 uOffset;","uniform vec2 uRepeat;","uniform bool enableDisplacement;","#ifdef VERTEX_TEXTURES","uniform sampler2D tDisplacement;","uniform float uDisplacementScale;","uniform float uDisplacementBias;","#endif","varying vec3 vTangent;","varying vec3 vBinormal;","varying vec3 vNormal;","varying vec2 vUv;","varying vec3 vWorldPosition;","varying vec3 vViewPosition;",a.ShaderChunk.skinning_pars_vertex,a.ShaderChunk.shadowmap_pars_vertex,"void main() {",a.ShaderChunk.skinbase_vertex,a.ShaderChunk.skinnormal_vertex,"#ifdef USE_SKINNING","vNormal = normalize( normalMatrix * skinnedNormal.xyz );","vec4 skinnedTangent = skinMatrix * vec4( tangent.xyz, 0.0 );","vTangent = normalize( normalMatrix * skinnedTangent.xyz );","#else","vNormal = normalize( normalMatrix * normal );","vTangent = normalize( normalMatrix * tangent.xyz );","#endif","vBinormal = normalize( cross( vNormal, vTangent ) * tangent.w );","vUv = uv * uRepeat + uOffset;","vec3 displacedPosition;","#ifdef VERTEX_TEXTURES","if ( enableDisplacement ) {","vec3 dv = texture2D( tDisplacement, uv ).xyz;","float df = uDisplacementScale * dv.x + uDisplacementBias;","displacedPosition = position + normalize( normal ) * df;","} else {","#ifdef USE_SKINNING","vec4 skinVertex = vec4( position, 1.0 );","vec4 skinned = boneMatX * skinVertex * skinWeight.x;","skinned += boneMatY * skinVertex * skinWeight.y;","displacedPosition = skinned.xyz;","#else","displacedPosition = position;","#endif","}","#else","#ifdef USE_SKINNING","vec4 skinVertex = vec4( position, 1.0 );","vec4 skinned = boneMatX * skinVertex * skinWeight.x;","skinned += boneMatY * skinVertex * skinWeight.y;","displacedPosition = skinned.xyz;","#else","displacedPosition = position;","#endif","#endif","vec4 mvPosition = modelViewMatrix * vec4( displacedPosition, 1.0 );","vec4 worldPosition = modelMatrix * vec4( displacedPosition, 1.0 );","gl_Position = projectionMatrix * mvPosition;","vWorldPosition = worldPosition.xyz;","vViewPosition = -mvPosition.xyz;","#ifdef USE_SHADOWMAP","for( int i = 0; i < MAX_SHADOWS; i ++ ) {","vShadowCoord[ i ] = shadowMatrix[ i ] * worldPosition;","}","#endif","}"].join("\n")},cube:{uniforms:{tCube:{type:"t",value:null},tFlip:{type:"f",value:-1}},vertexShader:["varying vec3 vWorldPosition;","void main() {","vec4 worldPosition = modelMatrix * vec4( position, 1.0 );","vWorldPosition = worldPosition.xyz;","gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );","}"].join("\n"),fragmentShader:["uniform samplerCube tCube;","uniform float tFlip;","varying vec3 vWorldPosition;","void main() {","gl_FragColor = textureCube( tCube, vec3( tFlip * vWorldPosition.x, vWorldPosition.yz ) );","}"].join("\n")},depthRGBA:{uniforms:{},vertexShader:[a.ShaderChunk.morphtarget_pars_vertex,a.ShaderChunk.skinning_pars_vertex,"void main() {",a.ShaderChunk.skinbase_vertex,a.ShaderChunk.morphtarget_vertex,a.ShaderChunk.skinning_vertex,a.ShaderChunk.default_vertex,"}"].join("\n"),fragmentShader:["vec4 pack_depth( const in float depth ) {","const vec4 bit_shift = vec4( 256.0 * 256.0 * 256.0, 256.0 * 256.0, 256.0, 1.0 );","const vec4 bit_mask = vec4( 0.0, 1.0 / 256.0, 1.0 / 256.0, 1.0 / 256.0 );","vec4 res = fract( depth * bit_shift );","res -= res.xxyz * bit_mask;","return res;","}","void main() {","gl_FragData[ 0 ] = pack_depth( gl_FragCoord.z );","}"].join("\n")}},a.WebGLRenderer=function(b){function c(a){a.__webglVertexBuffer=Jb.createBuffer(),a.__webglColorBuffer=Jb.createBuffer(),Pb.info.memory.geometries++}function d(a){a.__webglVertexBuffer=Jb.createBuffer(),a.__webglColorBuffer=Jb.createBuffer(),a.__webglLineDistanceBuffer=Jb.createBuffer(),Pb.info.memory.geometries++}function e(a){a.__webglVertexBuffer=Jb.createBuffer(),a.__webglNormalBuffer=Jb.createBuffer(),a.__webglTangentBuffer=Jb.createBuffer(),a.__webglColorBuffer=Jb.createBuffer(),a.__webglUVBuffer=Jb.createBuffer(),a.__webglUV2Buffer=Jb.createBuffer(),a.__webglSkinIndicesBuffer=Jb.createBuffer(),a.__webglSkinWeightsBuffer=Jb.createBuffer(),a.__webglFaceBuffer=Jb.createBuffer(),a.__webglLineBuffer=Jb.createBuffer();var b,c;if(a.numMorphTargets)for(a.__webglMorphTargetsBuffers=[],b=0,c=a.numMorphTargets;c>b;b++)a.__webglMorphTargetsBuffers.push(Jb.createBuffer());if(a.numMorphNormals)for(a.__webglMorphNormalsBuffers=[],b=0,c=a.numMorphNormals;c>b;b++)a.__webglMorphNormalsBuffers.push(Jb.createBuffer());Pb.info.memory.geometries++}function f(a,b){var c=a.vertices.length,d=b.material;if(d.attributes){void 0===a.__webglCustomAttributesList&&(a.__webglCustomAttributesList=[]);for(var e in d.attributes){var f=d.attributes[e];if(!f.__webglInitialized||f.createUniqueBuffers){f.__webglInitialized=!0;var g=1;"v2"===f.type?g=2:"v3"===f.type?g=3:"v4"===f.type?g=4:"c"===f.type&&(g=3),f.size=g,f.array=new Float32Array(c*g),f.buffer=Jb.createBuffer(),f.buffer.belongsToAttribute=e,f.needsUpdate=!0}a.__webglCustomAttributesList.push(f)}}}function g(a,b){var c=a.vertices.length;a.__vertexArray=new Float32Array(3*c),a.__colorArray=new Float32Array(3*c),a.__sortArray=[],a.__webglParticleCount=c,f(a,b)}function h(a,b){var c=a.vertices.length;a.__vertexArray=new Float32Array(3*c),a.__colorArray=new Float32Array(3*c),a.__lineDistanceArray=new Float32Array(1*c),a.__webglLineCount=c,f(a,b)}function i(a,b){var c=b.geometry,d=a.faces3,e=3*d.length,f=1*d.length,g=3*d.length,h=j(b,a),i=n(h),k=l(h),o=m(h);a.__vertexArray=new Float32Array(3*e),k&&(a.__normalArray=new Float32Array(3*e)),c.hasTangents&&(a.__tangentArray=new Float32Array(4*e)),o&&(a.__colorArray=new Float32Array(3*e)),i&&(c.faceVertexUvs.length>0&&(a.__uvArray=new Float32Array(2*e)),c.faceVertexUvs.length>1&&(a.__uv2Array=new Float32Array(2*e))),b.geometry.skinWeights.length&&b.geometry.skinIndices.length&&(a.__skinIndexArray=new Float32Array(4*e),a.__skinWeightArray=new Float32Array(4*e)),a.__faceArray=new Uint16Array(3*f),a.__lineArray=new Uint16Array(2*g);var p,q;if(a.numMorphTargets)for(a.__morphTargetsArrays=[],p=0,q=a.numMorphTargets;q>p;p++)a.__morphTargetsArrays.push(new Float32Array(3*e));if(a.numMorphNormals)for(a.__morphNormalsArrays=[],p=0,q=a.numMorphNormals;q>p;p++)a.__morphNormalsArrays.push(new Float32Array(3*e));if(a.__webglFaceCount=3*f,a.__webglLineCount=2*g,h.attributes){void 0===a.__webglCustomAttributesList&&(a.__webglCustomAttributesList=[]);for(var r in h.attributes){var s=h.attributes[r],t={};for(var u in s)t[u]=s[u];if(!t.__webglInitialized||t.createUniqueBuffers){t.__webglInitialized=!0;var v=1;"v2"===t.type?v=2:"v3"===t.type?v=3:"v4"===t.type?v=4:"c"===t.type&&(v=3),t.size=v,t.array=new Float32Array(e*v),t.buffer=Jb.createBuffer(),t.buffer.belongsToAttribute=r,s.needsUpdate=!0,t.__original=s}a.__webglCustomAttributesList.push(t)}}a.__inittedArrays=!0}function j(b,c){return b.material instanceof a.MeshFaceMaterial?b.material.materials[c.materialIndex]:b.material}function k(b){return b&&void 0!==b.shading&&b.shading===a.SmoothShading}function l(b){return b instanceof a.MeshBasicMaterial&&!b.envMap||b instanceof a.MeshDepthMaterial?!1:k(b)?a.SmoothShading:a.FlatShading}function m(a){return a.vertexColors?a.vertexColors:!1}function n(b){return b.map||b.lightMap||b.bumpMap||b.normalMap||b.specularMap||b instanceof a.ShaderMaterial?!0:!1}function o(a){var b,c,d;for(b in a.attributes)d="index"===b?Jb.ELEMENT_ARRAY_BUFFER:Jb.ARRAY_BUFFER,c=a.attributes[b],c.buffer=Jb.createBuffer(),Jb.bindBuffer(d,c.buffer),Jb.bufferData(d,c.array,Jb.STATIC_DRAW)}function p(a,b,c){var d,e,f,g,h,i,j,k,l,m,n,o,p=a.vertices,q=p.length,r=a.colors,s=r.length,t=a.__vertexArray,u=a.__colorArray,v=a.__sortArray,w=a.verticesNeedUpdate,x=(a.elementsNeedUpdate,a.colorsNeedUpdate),z=a.__webglCustomAttributesList;if(c.sortParticles){for(rc.copy(qc),rc.multiply(c.matrixWorld),d=0;q>d;d++)f=p[d],sc.copy(f),sc.applyProjection(rc),v[d]=[sc.z,d];for(v.sort(y),d=0;q>d;d++)f=p[v[d][1]],g=3*d,t[g]=f.x,t[g+1]=f.y,t[g+2]=f.z;for(e=0;s>e;e++)g=3*e,i=r[v[e][1]],u[g]=i.r,u[g+1]=i.g,u[g+2]=i.b;if(z)for(j=0,k=z.length;k>j;j++)if(o=z[j],void 0===o.boundTo||"vertices"===o.boundTo)if(g=0,m=o.value.length,1===o.size)for(l=0;m>l;l++)h=v[l][1],o.array[l]=o.value[h];else if(2===o.size)for(l=0;m>l;l++)h=v[l][1],n=o.value[h],o.array[g]=n.x,o.array[g+1]=n.y,g+=2;else if(3===o.size)if("c"===o.type)for(l=0;m>l;l++)h=v[l][1],n=o.value[h],o.array[g]=n.r,o.array[g+1]=n.g,o.array[g+2]=n.b,g+=3;else for(l=0;m>l;l++)h=v[l][1],n=o.value[h],o.array[g]=n.x,o.array[g+1]=n.y,o.array[g+2]=n.z,g+=3;else if(4===o.size)for(l=0;m>l;l++)h=v[l][1],n=o.value[h],o.array[g]=n.x,o.array[g+1]=n.y,o.array[g+2]=n.z,o.array[g+3]=n.w,g+=4}else{if(w)for(d=0;q>d;d++)f=p[d],g=3*d,t[g]=f.x,t[g+1]=f.y,t[g+2]=f.z;if(x)for(e=0;s>e;e++)i=r[e],g=3*e,u[g]=i.r,u[g+1]=i.g,u[g+2]=i.b;if(z)for(j=0,k=z.length;k>j;j++)if(o=z[j],o.needsUpdate&&(void 0===o.boundTo||"vertices"===o.boundTo))if(m=o.value.length,g=0,1===o.size)for(l=0;m>l;l++)o.array[l]=o.value[l];else if(2===o.size)for(l=0;m>l;l++)n=o.value[l],o.array[g]=n.x,o.array[g+1]=n.y,g+=2;else if(3===o.size)if("c"===o.type)for(l=0;m>l;l++)n=o.value[l],o.array[g]=n.r,o.array[g+1]=n.g,o.array[g+2]=n.b,g+=3;else for(l=0;m>l;l++)n=o.value[l],o.array[g]=n.x,o.array[g+1]=n.y,o.array[g+2]=n.z,g+=3;else if(4===o.size)for(l=0;m>l;l++)n=o.value[l],o.array[g]=n.x,o.array[g+1]=n.y,o.array[g+2]=n.z,o.array[g+3]=n.w,g+=4}if((w||c.sortParticles)&&(Jb.bindBuffer(Jb.ARRAY_BUFFER,a.__webglVertexBuffer),Jb.bufferData(Jb.ARRAY_BUFFER,t,b)),(x||c.sortParticles)&&(Jb.bindBuffer(Jb.ARRAY_BUFFER,a.__webglColorBuffer),Jb.bufferData(Jb.ARRAY_BUFFER,u,b)),z)for(j=0,k=z.length;k>j;j++)o=z[j],(o.needsUpdate||c.sortParticles)&&(Jb.bindBuffer(Jb.ARRAY_BUFFER,o.buffer),Jb.bufferData(Jb.ARRAY_BUFFER,o.array,b))}function q(a,b){var c,d,e,f,g,h,i,j,k,l,m,n,o=a.vertices,p=a.colors,q=a.lineDistances,r=o.length,s=p.length,t=q.length,u=a.__vertexArray,v=a.__colorArray,w=a.__lineDistanceArray,x=a.verticesNeedUpdate,y=a.colorsNeedUpdate,z=a.lineDistancesNeedUpdate,A=a.__webglCustomAttributesList; +if(x){for(c=0;r>c;c++)f=o[c],g=3*c,u[g]=f.x,u[g+1]=f.y,u[g+2]=f.z;Jb.bindBuffer(Jb.ARRAY_BUFFER,a.__webglVertexBuffer),Jb.bufferData(Jb.ARRAY_BUFFER,u,b)}if(y){for(d=0;s>d;d++)h=p[d],g=3*d,v[g]=h.r,v[g+1]=h.g,v[g+2]=h.b;Jb.bindBuffer(Jb.ARRAY_BUFFER,a.__webglColorBuffer),Jb.bufferData(Jb.ARRAY_BUFFER,v,b)}if(z){for(e=0;t>e;e++)w[e]=q[e];Jb.bindBuffer(Jb.ARRAY_BUFFER,a.__webglLineDistanceBuffer),Jb.bufferData(Jb.ARRAY_BUFFER,w,b)}if(A)for(i=0,j=A.length;j>i;i++)if(n=A[i],n.needsUpdate&&(void 0===n.boundTo||"vertices"===n.boundTo)){if(g=0,l=n.value.length,1===n.size)for(k=0;l>k;k++)n.array[k]=n.value[k];else if(2===n.size)for(k=0;l>k;k++)m=n.value[k],n.array[g]=m.x,n.array[g+1]=m.y,g+=2;else if(3===n.size)if("c"===n.type)for(k=0;l>k;k++)m=n.value[k],n.array[g]=m.r,n.array[g+1]=m.g,n.array[g+2]=m.b,g+=3;else for(k=0;l>k;k++)m=n.value[k],n.array[g]=m.x,n.array[g+1]=m.y,n.array[g+2]=m.z,g+=3;else if(4===n.size)for(k=0;l>k;k++)m=n.value[k],n.array[g]=m.x,n.array[g+1]=m.y,n.array[g+2]=m.z,n.array[g+3]=m.w,g+=4;Jb.bindBuffer(Jb.ARRAY_BUFFER,n.buffer),Jb.bufferData(Jb.ARRAY_BUFFER,n.array,b)}}function r(b,c,d,e,f){if(b.__inittedArrays){var g,h,i,j,k,o,p,q,r,s,t,u,v,w,x,y,z,A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z=l(f),$=m(f),_=n(f),ab=Z===a.SmoothShading,bb=0,cb=0,db=0,eb=0,fb=0,gb=0,hb=0,ib=0,jb=0,kb=0,lb=0,mb=0,nb=0,ob=b.__vertexArray,pb=b.__uvArray,qb=b.__uv2Array,rb=b.__normalArray,sb=b.__tangentArray,tb=b.__colorArray,ub=b.__skinIndexArray,vb=b.__skinWeightArray,wb=b.__morphTargetsArrays,xb=b.__morphNormalsArrays,yb=b.__webglCustomAttributesList,zb=b.__faceArray,Ab=b.__lineArray,Bb=c.geometry,Cb=Bb.verticesNeedUpdate,Db=Bb.elementsNeedUpdate,Eb=Bb.uvsNeedUpdate,Fb=Bb.normalsNeedUpdate,Gb=Bb.tangentsNeedUpdate,Hb=Bb.colorsNeedUpdate,Ib=Bb.morphTargetsNeedUpdate,Kb=Bb.vertices,Lb=b.faces3,Mb=Bb.faces,Nb=Bb.faceVertexUvs[0],Ob=Bb.faceVertexUvs[1],Pb=(Bb.colors,Bb.skinIndices),Qb=Bb.skinWeights,Rb=Bb.morphTargets,Sb=Bb.morphNormals;if(Cb){for(g=0,h=Lb.length;h>g;g++)j=Mb[Lb[g]],u=Kb[j.a],v=Kb[j.b],w=Kb[j.c],ob[cb]=u.x,ob[cb+1]=u.y,ob[cb+2]=u.z,ob[cb+3]=v.x,ob[cb+4]=v.y,ob[cb+5]=v.z,ob[cb+6]=w.x,ob[cb+7]=w.y,ob[cb+8]=w.z,cb+=9;Jb.bindBuffer(Jb.ARRAY_BUFFER,b.__webglVertexBuffer),Jb.bufferData(Jb.ARRAY_BUFFER,ob,d)}if(Ib)for(R=0,S=Rb.length;S>R;R++){for(lb=0,g=0,h=Lb.length;h>g;g++)V=Lb[g],j=Mb[V],u=Rb[R].vertices[j.a],v=Rb[R].vertices[j.b],w=Rb[R].vertices[j.c],T=wb[R],T[lb]=u.x,T[lb+1]=u.y,T[lb+2]=u.z,T[lb+3]=v.x,T[lb+4]=v.y,T[lb+5]=v.z,T[lb+6]=w.x,T[lb+7]=w.y,T[lb+8]=w.z,f.morphNormals&&(ab?(W=Sb[R].vertexNormals[V],A=W.a,B=W.b,C=W.c):(A=Sb[R].faceNormals[V],B=A,C=A),U=xb[R],U[lb]=A.x,U[lb+1]=A.y,U[lb+2]=A.z,U[lb+3]=B.x,U[lb+4]=B.y,U[lb+5]=B.z,U[lb+6]=C.x,U[lb+7]=C.y,U[lb+8]=C.z),lb+=9;Jb.bindBuffer(Jb.ARRAY_BUFFER,b.__webglMorphTargetsBuffers[R]),Jb.bufferData(Jb.ARRAY_BUFFER,wb[R],d),f.morphNormals&&(Jb.bindBuffer(Jb.ARRAY_BUFFER,b.__webglMorphNormalsBuffers[R]),Jb.bufferData(Jb.ARRAY_BUFFER,xb[R],d))}if(Qb.length){for(g=0,h=Lb.length;h>g;g++)j=Mb[Lb[g]],G=Qb[j.a],H=Qb[j.b],I=Qb[j.c],vb[kb]=G.x,vb[kb+1]=G.y,vb[kb+2]=G.z,vb[kb+3]=G.w,vb[kb+4]=H.x,vb[kb+5]=H.y,vb[kb+6]=H.z,vb[kb+7]=H.w,vb[kb+8]=I.x,vb[kb+9]=I.y,vb[kb+10]=I.z,vb[kb+11]=I.w,J=Pb[j.a],K=Pb[j.b],L=Pb[j.c],ub[kb]=J.x,ub[kb+1]=J.y,ub[kb+2]=J.z,ub[kb+3]=J.w,ub[kb+4]=K.x,ub[kb+5]=K.y,ub[kb+6]=K.z,ub[kb+7]=K.w,ub[kb+8]=L.x,ub[kb+9]=L.y,ub[kb+10]=L.z,ub[kb+11]=L.w,kb+=12;kb>0&&(Jb.bindBuffer(Jb.ARRAY_BUFFER,b.__webglSkinIndicesBuffer),Jb.bufferData(Jb.ARRAY_BUFFER,ub,d),Jb.bindBuffer(Jb.ARRAY_BUFFER,b.__webglSkinWeightsBuffer),Jb.bufferData(Jb.ARRAY_BUFFER,vb,d))}if(Hb&&$){for(g=0,h=Lb.length;h>g;g++)j=Mb[Lb[g]],p=j.vertexColors,q=j.color,3===p.length&&$===a.VertexColors?(D=p[0],E=p[1],F=p[2]):(D=q,E=q,F=q),tb[jb]=D.r,tb[jb+1]=D.g,tb[jb+2]=D.b,tb[jb+3]=E.r,tb[jb+4]=E.g,tb[jb+5]=E.b,tb[jb+6]=F.r,tb[jb+7]=F.g,tb[jb+8]=F.b,jb+=9;jb>0&&(Jb.bindBuffer(Jb.ARRAY_BUFFER,b.__webglColorBuffer),Jb.bufferData(Jb.ARRAY_BUFFER,tb,d))}if(Gb&&Bb.hasTangents){for(g=0,h=Lb.length;h>g;g++)j=Mb[Lb[g]],r=j.vertexTangents,x=r[0],y=r[1],z=r[2],sb[hb]=x.x,sb[hb+1]=x.y,sb[hb+2]=x.z,sb[hb+3]=x.w,sb[hb+4]=y.x,sb[hb+5]=y.y,sb[hb+6]=y.z,sb[hb+7]=y.w,sb[hb+8]=z.x,sb[hb+9]=z.y,sb[hb+10]=z.z,sb[hb+11]=z.w,hb+=12;Jb.bindBuffer(Jb.ARRAY_BUFFER,b.__webglTangentBuffer),Jb.bufferData(Jb.ARRAY_BUFFER,sb,d)}if(Fb&&Z){for(g=0,h=Lb.length;h>g;g++)if(j=Mb[Lb[g]],k=j.vertexNormals,o=j.normal,3===k.length&&ab)for(M=0;3>M;M++)O=k[M],rb[gb]=O.x,rb[gb+1]=O.y,rb[gb+2]=O.z,gb+=3;else for(M=0;3>M;M++)rb[gb]=o.x,rb[gb+1]=o.y,rb[gb+2]=o.z,gb+=3;Jb.bindBuffer(Jb.ARRAY_BUFFER,b.__webglNormalBuffer),Jb.bufferData(Jb.ARRAY_BUFFER,rb,d)}if(Eb&&Nb&&_){for(g=0,h=Lb.length;h>g;g++)if(i=Lb[g],s=Nb[i],void 0!==s)for(M=0;3>M;M++)P=s[M],pb[db]=P.x,pb[db+1]=P.y,db+=2;db>0&&(Jb.bindBuffer(Jb.ARRAY_BUFFER,b.__webglUVBuffer),Jb.bufferData(Jb.ARRAY_BUFFER,pb,d))}if(Eb&&Ob&&_){for(g=0,h=Lb.length;h>g;g++)if(i=Lb[g],t=Ob[i],void 0!==t)for(M=0;3>M;M++)Q=t[M],qb[eb]=Q.x,qb[eb+1]=Q.y,eb+=2;eb>0&&(Jb.bindBuffer(Jb.ARRAY_BUFFER,b.__webglUV2Buffer),Jb.bufferData(Jb.ARRAY_BUFFER,qb,d))}if(Db){for(g=0,h=Lb.length;h>g;g++)zb[fb]=bb,zb[fb+1]=bb+1,zb[fb+2]=bb+2,fb+=3,Ab[ib]=bb,Ab[ib+1]=bb+1,Ab[ib+2]=bb,Ab[ib+3]=bb+2,Ab[ib+4]=bb+1,Ab[ib+5]=bb+2,ib+=6,bb+=3;Jb.bindBuffer(Jb.ELEMENT_ARRAY_BUFFER,b.__webglFaceBuffer),Jb.bufferData(Jb.ELEMENT_ARRAY_BUFFER,zb,d),Jb.bindBuffer(Jb.ELEMENT_ARRAY_BUFFER,b.__webglLineBuffer),Jb.bufferData(Jb.ELEMENT_ARRAY_BUFFER,Ab,d)}if(yb)for(M=0,N=yb.length;N>M;M++)if(Y=yb[M],Y.__original.needsUpdate){if(mb=0,nb=0,1===Y.size){if(void 0===Y.boundTo||"vertices"===Y.boundTo)for(g=0,h=Lb.length;h>g;g++)j=Mb[Lb[g]],Y.array[mb]=Y.value[j.a],Y.array[mb+1]=Y.value[j.b],Y.array[mb+2]=Y.value[j.c],mb+=3;else if("faces"===Y.boundTo)for(g=0,h=Lb.length;h>g;g++)X=Y.value[Lb[g]],Y.array[mb]=X,Y.array[mb+1]=X,Y.array[mb+2]=X,mb+=3}else if(2===Y.size){if(void 0===Y.boundTo||"vertices"===Y.boundTo)for(g=0,h=Lb.length;h>g;g++)j=Mb[Lb[g]],u=Y.value[j.a],v=Y.value[j.b],w=Y.value[j.c],Y.array[mb]=u.x,Y.array[mb+1]=u.y,Y.array[mb+2]=v.x,Y.array[mb+3]=v.y,Y.array[mb+4]=w.x,Y.array[mb+5]=w.y,mb+=6;else if("faces"===Y.boundTo)for(g=0,h=Lb.length;h>g;g++)X=Y.value[Lb[g]],u=X,v=X,w=X,Y.array[mb]=u.x,Y.array[mb+1]=u.y,Y.array[mb+2]=v.x,Y.array[mb+3]=v.y,Y.array[mb+4]=w.x,Y.array[mb+5]=w.y,mb+=6}else if(3===Y.size){var Tb;if(Tb="c"===Y.type?["r","g","b"]:["x","y","z"],void 0===Y.boundTo||"vertices"===Y.boundTo)for(g=0,h=Lb.length;h>g;g++)j=Mb[Lb[g]],u=Y.value[j.a],v=Y.value[j.b],w=Y.value[j.c],Y.array[mb]=u[Tb[0]],Y.array[mb+1]=u[Tb[1]],Y.array[mb+2]=u[Tb[2]],Y.array[mb+3]=v[Tb[0]],Y.array[mb+4]=v[Tb[1]],Y.array[mb+5]=v[Tb[2]],Y.array[mb+6]=w[Tb[0]],Y.array[mb+7]=w[Tb[1]],Y.array[mb+8]=w[Tb[2]],mb+=9;else if("faces"===Y.boundTo)for(g=0,h=Lb.length;h>g;g++)X=Y.value[Lb[g]],u=X,v=X,w=X,Y.array[mb]=u[Tb[0]],Y.array[mb+1]=u[Tb[1]],Y.array[mb+2]=u[Tb[2]],Y.array[mb+3]=v[Tb[0]],Y.array[mb+4]=v[Tb[1]],Y.array[mb+5]=v[Tb[2]],Y.array[mb+6]=w[Tb[0]],Y.array[mb+7]=w[Tb[1]],Y.array[mb+8]=w[Tb[2]],mb+=9;else if("faceVertices"===Y.boundTo)for(g=0,h=Lb.length;h>g;g++)X=Y.value[Lb[g]],u=X[0],v=X[1],w=X[2],Y.array[mb]=u[Tb[0]],Y.array[mb+1]=u[Tb[1]],Y.array[mb+2]=u[Tb[2]],Y.array[mb+3]=v[Tb[0]],Y.array[mb+4]=v[Tb[1]],Y.array[mb+5]=v[Tb[2]],Y.array[mb+6]=w[Tb[0]],Y.array[mb+7]=w[Tb[1]],Y.array[mb+8]=w[Tb[2]],mb+=9}else if(4===Y.size)if(void 0===Y.boundTo||"vertices"===Y.boundTo)for(g=0,h=Lb.length;h>g;g++)j=Mb[Lb[g]],u=Y.value[j.a],v=Y.value[j.b],w=Y.value[j.c],Y.array[mb]=u.x,Y.array[mb+1]=u.y,Y.array[mb+2]=u.z,Y.array[mb+3]=u.w,Y.array[mb+4]=v.x,Y.array[mb+5]=v.y,Y.array[mb+6]=v.z,Y.array[mb+7]=v.w,Y.array[mb+8]=w.x,Y.array[mb+9]=w.y,Y.array[mb+10]=w.z,Y.array[mb+11]=w.w,mb+=12;else if("faces"===Y.boundTo)for(g=0,h=Lb.length;h>g;g++)X=Y.value[Lb[g]],u=X,v=X,w=X,Y.array[mb]=u.x,Y.array[mb+1]=u.y,Y.array[mb+2]=u.z,Y.array[mb+3]=u.w,Y.array[mb+4]=v.x,Y.array[mb+5]=v.y,Y.array[mb+6]=v.z,Y.array[mb+7]=v.w,Y.array[mb+8]=w.x,Y.array[mb+9]=w.y,Y.array[mb+10]=w.z,Y.array[mb+11]=w.w,mb+=12;else if("faceVertices"===Y.boundTo)for(g=0,h=Lb.length;h>g;g++)X=Y.value[Lb[g]],u=X[0],v=X[1],w=X[2],Y.array[mb]=u.x,Y.array[mb+1]=u.y,Y.array[mb+2]=u.z,Y.array[mb+3]=u.w,Y.array[mb+4]=v.x,Y.array[mb+5]=v.y,Y.array[mb+6]=v.z,Y.array[mb+7]=v.w,Y.array[mb+8]=w.x,Y.array[mb+9]=w.y,Y.array[mb+10]=w.z,Y.array[mb+11]=w.w,mb+=12;Jb.bindBuffer(Jb.ARRAY_BUFFER,Y.buffer),Jb.bufferData(Jb.ARRAY_BUFFER,Y.array,d)}e&&(delete b.__inittedArrays,delete b.__colorArray,delete b.__normalArray,delete b.__tangentArray,delete b.__uvArray,delete b.__uv2Array,delete b.__faceArray,delete b.__vertexArray,delete b.__lineArray,delete b.__skinIndexArray,delete b.__skinWeightArray)}}function s(a,b,c,d){var e,f,g,h;for(f in b)g=b[f],e=c[f],g>=0&&(e?(h=e.itemSize,Jb.bindBuffer(Jb.ARRAY_BUFFER,e.buffer),u(g),Jb.vertexAttribPointer(g,h,Jb.FLOAT,!1,0,d*h*4)):a.defaultAttributeValues&&(2===a.defaultAttributeValues[f].length?Jb.vertexAttrib2fv(g,a.defaultAttributeValues[f]):3===a.defaultAttributeValues[f].length&&Jb.vertexAttrib3fv(g,a.defaultAttributeValues[f])))}function t(a,b){var c,d,e=a.attributes;for(c in e)d=e[c],d.needsUpdate&&("index"===c?(Jb.bindBuffer(Jb.ELEMENT_ARRAY_BUFFER,d.buffer),Jb.bufferData(Jb.ELEMENT_ARRAY_BUFFER,d.array,b)):(Jb.bindBuffer(Jb.ARRAY_BUFFER,d.buffer),Jb.bufferData(Jb.ARRAY_BUFFER,d.array,b)),d.needsUpdate=!1)}function u(a){0===oc[a]&&(Jb.enableVertexAttribArray(a),oc[a]=1)}function v(){for(var a in oc)1===oc[a]&&(Jb.disableVertexAttribArray(a),oc[a]=0)}function w(a,b,c){var d=a.program.attributes;if(-1!==c.morphTargetBase&&d.position>=0?(Jb.bindBuffer(Jb.ARRAY_BUFFER,b.__webglMorphTargetsBuffers[c.morphTargetBase]),u(d.position),Jb.vertexAttribPointer(d.position,3,Jb.FLOAT,!1,0,0)):d.position>=0&&(Jb.bindBuffer(Jb.ARRAY_BUFFER,b.__webglVertexBuffer),u(d.position),Jb.vertexAttribPointer(d.position,3,Jb.FLOAT,!1,0,0)),c.morphTargetForcedOrder.length)for(var e=0,f=c.morphTargetForcedOrder,g=c.morphTargetInfluences;e=0&&(Jb.bindBuffer(Jb.ARRAY_BUFFER,b.__webglMorphTargetsBuffers[f[e]]),u(d["morphTarget"+e]),Jb.vertexAttribPointer(d["morphTarget"+e],3,Jb.FLOAT,!1,0,0)),d["morphNormal"+e]>=0&&a.morphNormals&&(Jb.bindBuffer(Jb.ARRAY_BUFFER,b.__webglMorphNormalsBuffers[f[e]]),u(d["morphNormal"+e]),Jb.vertexAttribPointer(d["morphNormal"+e],3,Jb.FLOAT,!1,0,0)),c.__webglMorphTargetInfluences[e]=g[f[e]],e++;else{var h,i,j=[],g=c.morphTargetInfluences,k=g.length;for(i=0;k>i;i++)h=g[i],h>0&&j.push([h,i]);j.length>a.numSupportedMorphTargets?(j.sort(y),j.length=a.numSupportedMorphTargets):j.length>a.numSupportedMorphNormals?j.sort(y):0===j.length&&j.push([0,0]);for(var l,e=0;e=0&&(Jb.bindBuffer(Jb.ARRAY_BUFFER,b.__webglMorphTargetsBuffers[l]),u(d["morphTarget"+e]),Jb.vertexAttribPointer(d["morphTarget"+e],3,Jb.FLOAT,!1,0,0)),d["morphNormal"+e]>=0&&a.morphNormals&&(Jb.bindBuffer(Jb.ARRAY_BUFFER,b.__webglMorphNormalsBuffers[l]),u(d["morphNormal"+e]),Jb.vertexAttribPointer(d["morphNormal"+e],3,Jb.FLOAT,!1,0,0)),c.__webglMorphTargetInfluences[e]=g[l]):c.__webglMorphTargetInfluences[e]=0,e++}null!==a.program.uniforms.morphTargetInfluences&&Jb.uniform1fv(a.program.uniforms.morphTargetInfluences,c.__webglMorphTargetInfluences)}function x(a,b){return a.z!==b.z?b.z-a.z:a.id-b.id}function y(a,b){return b[0]-a[0]}function z(a,b,c){if(a.length)for(var d=0,e=a.length;e>d;d++)Sb=null,Wb=null,$b=-1,cc=-1,dc=-1,Yb=-1,Zb=-1,Vb=-1,Ub=-1,uc=!0,a[d].render(b,c,mc,nc),Sb=null,Wb=null,$b=-1,cc=-1,dc=-1,Yb=-1,Zb=-1,Vb=-1,Ub=-1,uc=!0}function A(b,c,d,e,f,g,h,i){var j,k,l,m,n,o,p;c?(n=b.length-1,o=-1,p=-1):(n=0,o=b.length,p=1);for(var q=n;q!==o;q+=p)if(j=b[q],j.render){if(k=j.object,l=j.buffer,i)m=i;else{if(m=j[d],!m)continue;h&&Pb.setBlending(m.blending,m.blendEquation,m.blendSrc,m.blendDst),Pb.setDepthTest(m.depthTest),Pb.setDepthWrite(m.depthWrite),eb(m.polygonOffset,m.polygonOffsetFactor,m.polygonOffsetUnits)}Pb.setMaterialFaces(m),l instanceof a.BufferGeometry?Pb.renderBufferDirect(e,f,g,m,l,k):Pb.renderBuffer(e,f,g,m,l,k)}}function B(a,b,c,d,e,f,g){for(var h,i,j,k=0,l=a.length;l>k;k++)if(h=a[k],i=h.object,i.visible){if(g)j=g;else{if(j=h[b],!j)continue;f&&Pb.setBlending(j.blending,j.blendEquation,j.blendSrc,j.blendDst),Pb.setDepthTest(j.depthTest),Pb.setDepthWrite(j.depthWrite),eb(j.polygonOffset,j.polygonOffsetFactor,j.polygonOffsetUnits)}Pb.renderImmediateObject(c,d,e,j,i)}}function C(a){var b=a.object,c=b.material;c.transparent?(a.transparent=c,a.opaque=null):(a.opaque=c,a.transparent=null)}function D(b){var c=b.object,d=b.buffer,e=c.geometry,f=c.material;if(f instanceof a.MeshFaceMaterial){var g=e instanceof a.BufferGeometry?0:d.materialIndex;f=f.materials[g],f.transparent?(b.transparent=f,b.opaque=null):(b.opaque=f,b.transparent=null)}else f&&(f.transparent?(b.transparent=f,b.opaque=null):(b.opaque=f,b.transparent=null))}function E(b,f){var j,k,l,m;if(void 0===b.__webglInit)if(b.__webglInit=!0,b._modelViewMatrix=new a.Matrix4,b._normalMatrix=new a.Matrix3,void 0!==b.geometry&&void 0===b.geometry.__webglInit&&(b.geometry.__webglInit=!0,b.geometry.addEventListener("dispose",Ic)),k=b.geometry,void 0===k);else if(k instanceof a.BufferGeometry)o(k);else if(b instanceof a.Mesh){l=b.material,void 0===k.geometryGroups&&k.makeGroups(l instanceof a.MeshFaceMaterial);for(j in k.geometryGroups)m=k.geometryGroups[j],m.__webglVertexBuffer||(e(m),i(m,b),k.verticesNeedUpdate=!0,k.morphTargetsNeedUpdate=!0,k.elementsNeedUpdate=!0,k.uvsNeedUpdate=!0,k.normalsNeedUpdate=!0,k.tangentsNeedUpdate=!0,k.colorsNeedUpdate=!0)}else b instanceof a.Line?k.__webglVertexBuffer||(d(k),h(k,b),k.verticesNeedUpdate=!0,k.colorsNeedUpdate=!0,k.lineDistancesNeedUpdate=!0):b instanceof a.ParticleSystem&&(k.__webglVertexBuffer||(c(k),g(k,b),k.verticesNeedUpdate=!0,k.colorsNeedUpdate=!0));if(void 0===b.__webglActive){if(b instanceof a.Mesh){if(k=b.geometry,k instanceof a.BufferGeometry)F(f.__webglObjects,k,b);else if(k instanceof a.Geometry)for(j in k.geometryGroups)m=k.geometryGroups[j],F(f.__webglObjects,m,b)}else b instanceof a.Line||b instanceof a.ParticleSystem?(k=b.geometry,F(f.__webglObjects,k,b)):b instanceof a.ImmediateRenderObject||b.immediateRenderCallback?G(f.__webglObjectsImmediate,b):b instanceof a.Sprite?f.__webglSprites.push(b):b instanceof a.LensFlare&&f.__webglFlares.push(b);b.__webglActive=!0}}function F(a,b,c){a.push({id:null,buffer:b,object:c,opaque:null,transparent:null,z:0})}function G(a,b){a.push({id:null,object:b,opaque:null,transparent:null,z:0})}function H(b){var c,d,e,f=b.geometry;if(f instanceof a.BufferGeometry)t(f,Jb.DYNAMIC_DRAW);else if(b instanceof a.Mesh){for(var g=0,h=f.geometryGroupsList.length;h>g;g++)c=f.geometryGroupsList[g],e=j(b,c),f.buffersNeedUpdate&&i(c,b),d=e.attributes&&I(e),(f.verticesNeedUpdate||f.morphTargetsNeedUpdate||f.elementsNeedUpdate||f.uvsNeedUpdate||f.normalsNeedUpdate||f.colorsNeedUpdate||f.tangentsNeedUpdate||d)&&r(c,b,Jb.DYNAMIC_DRAW,!f.dynamic,e);f.verticesNeedUpdate=!1,f.morphTargetsNeedUpdate=!1,f.elementsNeedUpdate=!1,f.uvsNeedUpdate=!1,f.normalsNeedUpdate=!1,f.colorsNeedUpdate=!1,f.tangentsNeedUpdate=!1,f.buffersNeedUpdate=!1,e.attributes&&J(e)}else b instanceof a.Line?(e=j(b,f),d=e.attributes&&I(e),(f.verticesNeedUpdate||f.colorsNeedUpdate||f.lineDistancesNeedUpdate||d)&&q(f,Jb.DYNAMIC_DRAW),f.verticesNeedUpdate=!1,f.colorsNeedUpdate=!1,f.lineDistancesNeedUpdate=!1,e.attributes&&J(e)):b instanceof a.ParticleSystem&&(e=j(b,f),d=e.attributes&&I(e),(f.verticesNeedUpdate||f.colorsNeedUpdate||b.sortParticles||d)&&p(f,Jb.DYNAMIC_DRAW,b),f.verticesNeedUpdate=!1,f.colorsNeedUpdate=!1,e.attributes&&J(e))}function I(a){for(var b in a.attributes)if(a.attributes[b].needsUpdate)return!0;return!1}function J(a){for(var b in a.attributes)a.attributes[b].needsUpdate=!1}function K(b,c){b instanceof a.Mesh||b instanceof a.ParticleSystem||b instanceof a.Line?L(c.__webglObjects,b):b instanceof a.Sprite?M(c.__webglSprites,b):b instanceof a.LensFlare?M(c.__webglFlares,b):(b instanceof a.ImmediateRenderObject||b.immediateRenderCallback)&&L(c.__webglObjectsImmediate,b),delete b.__webglActive}function L(a,b){for(var c=a.length-1;c>=0;c--)a[c].object===b&&a.splice(c,1)}function M(a,b){for(var c=a.length-1;c>=0;c--)a[c]===b&&a.splice(c,1)}function N(b,c){b.uniforms=a.UniformsUtils.clone(c.uniforms),b.vertexShader=c.vertexShader,b.fragmentShader=c.fragmentShader}function O(b,c,d,e,f){Xb=0,e.needsUpdate&&(e.program&&Qc(e),Pb.initMaterial(e,c,d,f),e.needsUpdate=!1),e.morphTargets&&(f.__webglMorphTargetInfluences||(f.__webglMorphTargetInfluences=new Float32Array(Pb.maxMorphTargets)));var g=!1,h=e.program,i=h.uniforms,j=e.uniforms;if(h!==Sb&&(Jb.useProgram(h),Sb=h,g=!0),e.id!==Ub&&(Ub=e.id,g=!0),(g||b!==Wb)&&(Jb.uniformMatrix4fv(i.projectionMatrix,!1,b.projectionMatrix.elements),b!==Wb&&(Wb=b)),e.skinning)if(Bc&&f.useVertexTexture){if(null!==i.boneTexture){var k=Z();Jb.uniform1i(i.boneTexture,k),Pb.setTexture(f.boneTexture,k)}null!==i.boneTextureWidth&&Jb.uniform1i(i.boneTextureWidth,f.boneTextureWidth),null!==i.boneTextureHeight&&Jb.uniform1i(i.boneTextureHeight,f.boneTextureHeight)}else null!==i.boneGlobalMatrices&&Jb.uniformMatrix4fv(i.boneGlobalMatrices,!1,f.boneMatrices);return g&&(d&&e.fog&&T(j,d),(e instanceof a.MeshPhongMaterial||e instanceof a.MeshLambertMaterial||e.lights)&&(uc&&(cb(h,c),uc=!1),W(j,vc)),(e instanceof a.MeshBasicMaterial||e instanceof a.MeshLambertMaterial||e instanceof a.MeshPhongMaterial)&&P(j,e),e instanceof a.LineBasicMaterial?Q(j,e):e instanceof a.LineDashedMaterial?(Q(j,e),R(j,e)):e instanceof a.ParticleSystemMaterial?S(j,e):e instanceof a.MeshPhongMaterial?U(j,e):e instanceof a.MeshLambertMaterial?V(j,e):e instanceof a.MeshDepthMaterial?(j.mNear.value=b.near,j.mFar.value=b.far,j.opacity.value=e.opacity):e instanceof a.MeshNormalMaterial&&(j.opacity.value=e.opacity),f.receiveShadow&&!e._shadowPass&&X(j,c),$(h,e.uniformsList),(e instanceof a.ShaderMaterial||e instanceof a.MeshPhongMaterial||e.envMap)&&null!==i.cameraPosition&&(sc.setFromMatrixPosition(b.matrixWorld),Jb.uniform3f(i.cameraPosition,sc.x,sc.y,sc.z)),(e instanceof a.MeshPhongMaterial||e instanceof a.MeshLambertMaterial||e instanceof a.ShaderMaterial||e.skinning)&&null!==i.viewMatrix&&Jb.uniformMatrix4fv(i.viewMatrix,!1,b.matrixWorldInverse.elements)),Y(i,f),null!==i.modelMatrix&&Jb.uniformMatrix4fv(i.modelMatrix,!1,f.matrixWorld.elements),h}function P(b,c){b.opacity.value=c.opacity,Pb.gammaInput?b.diffuse.value.copyGammaToLinear(c.color):b.diffuse.value=c.color,b.map.value=c.map,b.lightMap.value=c.lightMap,b.specularMap.value=c.specularMap,c.bumpMap&&(b.bumpMap.value=c.bumpMap,b.bumpScale.value=c.bumpScale),c.normalMap&&(b.normalMap.value=c.normalMap,b.normalScale.value.copy(c.normalScale));var d;if(c.map?d=c.map:c.specularMap?d=c.specularMap:c.normalMap?d=c.normalMap:c.bumpMap&&(d=c.bumpMap),void 0!==d){var e=d.offset,f=d.repeat;b.offsetRepeat.value.set(e.x,e.y,f.x,f.y)}b.envMap.value=c.envMap,b.flipEnvMap.value=c.envMap instanceof a.WebGLRenderTargetCube?1:-1,b.reflectivity.value=Pb.gammaInput?c.reflectivity:c.reflectivity,b.refractionRatio.value=c.refractionRatio,b.combine.value=c.combine,b.useRefract.value=c.envMap&&c.envMap.mapping instanceof a.CubeRefractionMapping}function Q(a,b){a.diffuse.value=b.color,a.opacity.value=b.opacity}function R(a,b){a.dashSize.value=b.dashSize,a.totalSize.value=b.dashSize+b.gapSize,a.scale.value=b.scale}function S(a,b){a.psColor.value=b.color,a.opacity.value=b.opacity,a.size.value=b.size,a.scale.value=zb.height/2,a.map.value=b.map}function T(b,c){b.fogColor.value=c.color,c instanceof a.Fog?(b.fogNear.value=c.near,b.fogFar.value=c.far):c instanceof a.FogExp2&&(b.fogDensity.value=c.density)}function U(a,b){a.shininess.value=b.shininess,Pb.gammaInput?(a.ambient.value.copyGammaToLinear(b.ambient),a.emissive.value.copyGammaToLinear(b.emissive),a.specular.value.copyGammaToLinear(b.specular)):(a.ambient.value=b.ambient,a.emissive.value=b.emissive,a.specular.value=b.specular),b.wrapAround&&a.wrapRGB.value.copy(b.wrapRGB)}function V(a,b){Pb.gammaInput?(a.ambient.value.copyGammaToLinear(b.ambient),a.emissive.value.copyGammaToLinear(b.emissive)):(a.ambient.value=b.ambient,a.emissive.value=b.emissive),b.wrapAround&&a.wrapRGB.value.copy(b.wrapRGB)}function W(a,b){a.ambientLightColor.value=b.ambient,a.directionalLightColor.value=b.directional.colors,a.directionalLightDirection.value=b.directional.positions,a.pointLightColor.value=b.point.colors,a.pointLightPosition.value=b.point.positions,a.pointLightDistance.value=b.point.distances,a.spotLightColor.value=b.spot.colors,a.spotLightPosition.value=b.spot.positions,a.spotLightDistance.value=b.spot.distances,a.spotLightDirection.value=b.spot.directions,a.spotLightAngleCos.value=b.spot.anglesCos,a.spotLightExponent.value=b.spot.exponents,a.hemisphereLightSkyColor.value=b.hemi.skyColors,a.hemisphereLightGroundColor.value=b.hemi.groundColors,a.hemisphereLightDirection.value=b.hemi.positions}function X(b,c){if(b.shadowMatrix)for(var d=0,e=0,f=c.length;f>e;e++){var g=c[e];g.castShadow&&(g instanceof a.SpotLight||g instanceof a.DirectionalLight&&!g.shadowCascade)&&(b.shadowMap.value[d]=g.shadowMap,b.shadowMapSize.value[d]=g.shadowMapSize,b.shadowMatrix.value[d]=g.shadowMatrix,b.shadowDarkness.value[d]=g.shadowDarkness,b.shadowBias.value[d]=g.shadowBias,d++)}}function Y(a,b){Jb.uniformMatrix4fv(a.modelViewMatrix,!1,b._modelViewMatrix.elements),a.normalMatrix&&Jb.uniformMatrix3fv(a.normalMatrix,!1,b._normalMatrix.elements)}function Z(){var a=Xb;return a>=wc&&console.warn("WebGLRenderer: trying to use "+a+" texture units while this GPU supports only "+wc),Xb+=1,a}function $(b,c){var d,e,f,g,h,i,j,k,l,m,n;for(l=0,m=c.length;m>l;l++)if(g=b.uniforms[c[l][1]])if(d=c[l][0],f=d.type,e=d.value,"i"===f)Jb.uniform1i(g,e);else if("f"===f)Jb.uniform1f(g,e);else if("v2"===f)Jb.uniform2f(g,e.x,e.y);else if("v3"===f)Jb.uniform3f(g,e.x,e.y,e.z);else if("v4"===f)Jb.uniform4f(g,e.x,e.y,e.z,e.w);else if("c"===f)Jb.uniform3f(g,e.r,e.g,e.b);else if("iv1"===f)Jb.uniform1iv(g,e);else if("iv"===f)Jb.uniform3iv(g,e);else if("fv1"===f)Jb.uniform1fv(g,e);else if("fv"===f)Jb.uniform3fv(g,e);else if("v2v"===f){for(void 0===d._array&&(d._array=new Float32Array(2*e.length)),j=0,k=e.length;k>j;j++)n=2*j,d._array[n]=e[j].x,d._array[n+1]=e[j].y;Jb.uniform2fv(g,d._array)}else if("v3v"===f){for(void 0===d._array&&(d._array=new Float32Array(3*e.length)),j=0,k=e.length;k>j;j++)n=3*j,d._array[n]=e[j].x,d._array[n+1]=e[j].y,d._array[n+2]=e[j].z;Jb.uniform3fv(g,d._array)}else if("v4v"===f){for(void 0===d._array&&(d._array=new Float32Array(4*e.length)),j=0,k=e.length;k>j;j++)n=4*j,d._array[n]=e[j].x,d._array[n+1]=e[j].y,d._array[n+2]=e[j].z,d._array[n+3]=e[j].w;Jb.uniform4fv(g,d._array)}else if("m4"===f)void 0===d._array&&(d._array=new Float32Array(16)),e.flattenToArray(d._array),Jb.uniformMatrix4fv(g,!1,d._array);else if("m4v"===f){for(void 0===d._array&&(d._array=new Float32Array(16*e.length)),j=0,k=e.length;k>j;j++)e[j].flattenToArrayOffset(d._array,16*j);Jb.uniformMatrix4fv(g,!1,d._array)}else if("t"===f){if(h=e,i=Z(),Jb.uniform1i(g,i),!h)continue;h.image instanceof Array&&6===h.image.length?nb(h,i):h instanceof a.WebGLRenderTargetCube?ob(h,i):Pb.setTexture(h,i)}else if("tv"===f){for(void 0===d._array&&(d._array=[]),j=0,k=d.value.length;k>j;j++)d._array[j]=Z();for(Jb.uniform1iv(g,d._array),j=0,k=d.value.length;k>j;j++)h=d.value[j],i=d._array[j],h&&Pb.setTexture(h,i)}else console.warn("THREE.WebGLRenderer: Unknown uniform type: "+f)}function _(a,b){a._modelViewMatrix.multiplyMatrices(b.matrixWorldInverse,a.matrixWorld),a._normalMatrix.getNormalMatrix(a._modelViewMatrix)}function ab(a,b,c,d){a[b]=c.r*c.r*d,a[b+1]=c.g*c.g*d,a[b+2]=c.b*c.b*d}function bb(a,b,c,d){a[b]=c.r*d,a[b+1]=c.g*d,a[b+2]=c.b*d}function cb(b,c){var d,e,f,g,h,i,j,k,l,m=0,n=0,o=0,p=vc,q=p.directional.colors,r=p.directional.positions,s=p.point.colors,t=p.point.positions,u=p.point.distances,v=p.spot.colors,w=p.spot.positions,x=p.spot.distances,y=p.spot.directions,z=p.spot.anglesCos,A=p.spot.exponents,B=p.hemi.skyColors,C=p.hemi.groundColors,D=p.hemi.positions,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0;for(d=0,e=c.length;e>d;d++)if(f=c[d],!f.onlyShadow)if(g=f.color,j=f.intensity,l=f.distance,f instanceof a.AmbientLight){if(!f.visible)continue;Pb.gammaInput?(m+=g.r*g.r,n+=g.g*g.g,o+=g.b*g.b):(m+=g.r,n+=g.g,o+=g.b)}else if(f instanceof a.DirectionalLight){if(I+=1,!f.visible)continue;if(tc.setFromMatrixPosition(f.matrixWorld),sc.setFromMatrixPosition(f.target.matrixWorld),tc.sub(sc),tc.normalize(),0===tc.x&&0===tc.y&&0===tc.z)continue;M=3*E,r[M]=tc.x,r[M+1]=tc.y,r[M+2]=tc.z,Pb.gammaInput?ab(q,M,g,j*j):bb(q,M,g,j),E+=1}else if(f instanceof a.PointLight){if(J+=1,!f.visible)continue;N=3*F,Pb.gammaInput?ab(s,N,g,j*j):bb(s,N,g,j),sc.setFromMatrixPosition(f.matrixWorld),t[N]=sc.x,t[N+1]=sc.y,t[N+2]=sc.z,u[F]=l,F+=1}else if(f instanceof a.SpotLight){if(K+=1,!f.visible)continue;O=3*G,Pb.gammaInput?ab(v,O,g,j*j):bb(v,O,g,j),sc.setFromMatrixPosition(f.matrixWorld),w[O]=sc.x,w[O+1]=sc.y,w[O+2]=sc.z,x[G]=l,tc.copy(sc),sc.setFromMatrixPosition(f.target.matrixWorld),tc.sub(sc),tc.normalize(),y[O]=tc.x,y[O+1]=tc.y,y[O+2]=tc.z,z[G]=Math.cos(f.angle),A[G]=f.exponent,G+=1}else if(f instanceof a.HemisphereLight){if(L+=1,!f.visible)continue;if(tc.setFromMatrixPosition(f.matrixWorld),tc.normalize(),0===tc.x&&0===tc.y&&0===tc.z)continue;P=3*H,D[P]=tc.x,D[P+1]=tc.y,D[P+2]=tc.z,h=f.color,i=f.groundColor,Pb.gammaInput?(k=j*j,ab(B,P,h,k),ab(C,P,i,k)):(bb(B,P,h,j),bb(C,P,i,j)),H+=1}for(d=3*E,e=Math.max(q.length,3*I);e>d;d++)q[d]=0;for(d=3*F,e=Math.max(s.length,3*J);e>d;d++)s[d]=0;for(d=3*G,e=Math.max(v.length,3*K);e>d;d++)v[d]=0;for(d=3*H,e=Math.max(B.length,3*L);e>d;d++)B[d]=0;for(d=3*H,e=Math.max(C.length,3*L);e>d;d++)C[d]=0;p.directional.length=E,p.point.length=F,p.spot.length=G,p.hemi.length=H,p.ambient[0]=m,p.ambient[1]=n,p.ambient[2]=o}function db(a){a!==hc&&(Jb.lineWidth(a),hc=a)}function eb(a,b,c){ec!==a&&(a?Jb.enable(Jb.POLYGON_OFFSET_FILL):Jb.disable(Jb.POLYGON_OFFSET_FILL),ec=a),!a||fc===b&&gc===c||(Jb.polygonOffset(b,c),fc=b,gc=c)}function fb(a){var b,c,d=[];for(var e in a)b=a[e],b!==!1&&(c="#define "+e+" "+b,d.push(c));return d.join("\n")}function gb(b,c,d,e,f,g,h,i){var j,k,l,m,n,o=[];b?o.push(b):(o.push(c),o.push(d));for(l in g)o.push(l),o.push(g[l]);for(j in h)o.push(j),o.push(h[j]);for(n=o.join(),j=0,k=Qb.length;k>j;j++){var p=Qb[j];if(p.code===n)return p.usedTimes++,p.program}var q="SHADOWMAP_TYPE_BASIC";h.shadowMapType===a.PCFShadowMap?q="SHADOWMAP_TYPE_PCF":h.shadowMapType===a.PCFSoftShadowMap&&(q="SHADOWMAP_TYPE_PCF_SOFT");var r=fb(g);m=Jb.createProgram();var s=["precision "+Bb+" float;","precision "+Bb+" int;",r,Ac?"#define VERTEX_TEXTURES":"",Pb.gammaInput?"#define GAMMA_INPUT":"",Pb.gammaOutput?"#define GAMMA_OUTPUT":"","#define MAX_DIR_LIGHTS "+h.maxDirLights,"#define MAX_POINT_LIGHTS "+h.maxPointLights,"#define MAX_SPOT_LIGHTS "+h.maxSpotLights,"#define MAX_HEMI_LIGHTS "+h.maxHemiLights,"#define MAX_SHADOWS "+h.maxShadows,"#define MAX_BONES "+h.maxBones,h.map?"#define USE_MAP":"",h.envMap?"#define USE_ENVMAP":"",h.lightMap?"#define USE_LIGHTMAP":"",h.bumpMap?"#define USE_BUMPMAP":"",h.normalMap?"#define USE_NORMALMAP":"",h.specularMap?"#define USE_SPECULARMAP":"",h.vertexColors?"#define USE_COLOR":"",h.skinning?"#define USE_SKINNING":"",h.useVertexTexture?"#define BONE_TEXTURE":"",h.morphTargets?"#define USE_MORPHTARGETS":"",h.morphNormals?"#define USE_MORPHNORMALS":"",h.wrapAround?"#define WRAP_AROUND":"",h.doubleSided?"#define DOUBLE_SIDED":"",h.flipSided?"#define FLIP_SIDED":"",h.shadowMapEnabled?"#define USE_SHADOWMAP":"",h.shadowMapEnabled?"#define "+q:"",h.shadowMapDebug?"#define SHADOWMAP_DEBUG":"",h.shadowMapCascade?"#define SHADOWMAP_CASCADE":"",h.sizeAttenuation?"#define USE_SIZEATTENUATION":"","uniform mat4 modelMatrix;","uniform mat4 modelViewMatrix;","uniform mat4 projectionMatrix;","uniform mat4 viewMatrix;","uniform mat3 normalMatrix;","uniform vec3 cameraPosition;","attribute vec3 position;","attribute vec3 normal;","attribute vec2 uv;","attribute vec2 uv2;","#ifdef USE_COLOR","attribute vec3 color;","#endif","#ifdef USE_MORPHTARGETS","attribute vec3 morphTarget0;","attribute vec3 morphTarget1;","attribute vec3 morphTarget2;","attribute vec3 morphTarget3;","#ifdef USE_MORPHNORMALS","attribute vec3 morphNormal0;","attribute vec3 morphNormal1;","attribute vec3 morphNormal2;","attribute vec3 morphNormal3;","#else","attribute vec3 morphTarget4;","attribute vec3 morphTarget5;","attribute vec3 morphTarget6;","attribute vec3 morphTarget7;","#endif","#endif","#ifdef USE_SKINNING","attribute vec4 skinIndex;","attribute vec4 skinWeight;","#endif",""].join("\n"),t=["precision "+Bb+" float;","precision "+Bb+" int;",h.bumpMap||h.normalMap?"#extension GL_OES_standard_derivatives : enable":"",r,"#define MAX_DIR_LIGHTS "+h.maxDirLights,"#define MAX_POINT_LIGHTS "+h.maxPointLights,"#define MAX_SPOT_LIGHTS "+h.maxSpotLights,"#define MAX_HEMI_LIGHTS "+h.maxHemiLights,"#define MAX_SHADOWS "+h.maxShadows,h.alphaTest?"#define ALPHATEST "+h.alphaTest:"",Pb.gammaInput?"#define GAMMA_INPUT":"",Pb.gammaOutput?"#define GAMMA_OUTPUT":"",h.useFog&&h.fog?"#define USE_FOG":"",h.useFog&&h.fogExp?"#define FOG_EXP2":"",h.map?"#define USE_MAP":"",h.envMap?"#define USE_ENVMAP":"",h.lightMap?"#define USE_LIGHTMAP":"",h.bumpMap?"#define USE_BUMPMAP":"",h.normalMap?"#define USE_NORMALMAP":"",h.specularMap?"#define USE_SPECULARMAP":"",h.vertexColors?"#define USE_COLOR":"",h.metal?"#define METAL":"",h.wrapAround?"#define WRAP_AROUND":"",h.doubleSided?"#define DOUBLE_SIDED":"",h.flipSided?"#define FLIP_SIDED":"",h.shadowMapEnabled?"#define USE_SHADOWMAP":"",h.shadowMapEnabled?"#define "+q:"",h.shadowMapDebug?"#define SHADOWMAP_DEBUG":"",h.shadowMapCascade?"#define SHADOWMAP_CASCADE":"","uniform mat4 viewMatrix;","uniform vec3 cameraPosition;",""].join("\n"),u=kb("vertex",s+d),v=kb("fragment",t+c);Jb.attachShader(m,u),Jb.attachShader(m,v),void 0!==i&&Jb.bindAttribLocation(m,0,i),Jb.linkProgram(m),Jb.getProgramParameter(m,Jb.LINK_STATUS)===!1&&(console.error("Could not initialise shader"),console.error("gl.VALIDATE_STATUS",Jb.getProgramParameter(m,Jb.VALIDATE_STATUS)),console.error("gl.getError()",Jb.getError())),""!==Jb.getProgramInfoLog(m)&&console.error("gl.getProgramInfoLog()",Jb.getProgramInfoLog(m)),Jb.deleteShader(v),Jb.deleteShader(u),m.uniforms={},m.attributes={};var w,x,y,z;w=["viewMatrix","modelViewMatrix","projectionMatrix","normalMatrix","modelMatrix","cameraPosition","morphTargetInfluences"],h.useVertexTexture?(w.push("boneTexture"),w.push("boneTextureWidth"),w.push("boneTextureHeight")):w.push("boneGlobalMatrices");for(x in e)w.push(x);for(hb(m,w),w=["position","normal","uv","uv2","tangent","color","skinIndex","skinWeight","lineDistance"],z=0;zc;c++)e=b[c],a.uniforms[e]=Jb.getUniformLocation(a,e)}function ib(a,b){var c,d,e;for(c=0,d=b.length;d>c;c++)e=b[c],a.attributes[e]=Jb.getAttribLocation(a,e)}function jb(a){for(var b=a.split("\n"),c=0,d=b.length;d>c;c++)b[c]=c+1+": "+b[c];return b.join("\n")}function kb(a,b){var c;return"fragment"===a?c=Jb.createShader(Jb.FRAGMENT_SHADER):"vertex"===a&&(c=Jb.createShader(Jb.VERTEX_SHADER)),Jb.shaderSource(c,b),Jb.compileShader(c),Jb.getShaderParameter(c,Jb.COMPILE_STATUS)?c:(console.error(Jb.getShaderInfoLog(c)),console.error(jb(b)),null)}function lb(b,c,d){d?(Jb.texParameteri(b,Jb.TEXTURE_WRAP_S,tb(c.wrapS)),Jb.texParameteri(b,Jb.TEXTURE_WRAP_T,tb(c.wrapT)),Jb.texParameteri(b,Jb.TEXTURE_MAG_FILTER,tb(c.magFilter)),Jb.texParameteri(b,Jb.TEXTURE_MIN_FILTER,tb(c.minFilter))):(Jb.texParameteri(b,Jb.TEXTURE_WRAP_S,Jb.CLAMP_TO_EDGE),Jb.texParameteri(b,Jb.TEXTURE_WRAP_T,Jb.CLAMP_TO_EDGE),Jb.texParameteri(b,Jb.TEXTURE_MAG_FILTER,sb(c.magFilter)),Jb.texParameteri(b,Jb.TEXTURE_MIN_FILTER,sb(c.minFilter))),Nb&&c.type!==a.FloatType&&(c.anisotropy>1||c.__oldAnisotropy)&&(Jb.texParameterf(b,Nb.TEXTURE_MAX_ANISOTROPY_EXT,Math.min(c.anisotropy,zc)),c.__oldAnisotropy=c.anisotropy) +}function mb(a,b){if(a.width<=b&&a.height<=b)return a;var c=Math.max(a.width,a.height),d=Math.floor(a.width*b/c),e=Math.floor(a.height*b/c),f=document.createElement("canvas");f.width=d,f.height=e;var g=f.getContext("2d");return g.drawImage(a,0,0,a.width,a.height,0,0,d,e),f}function nb(b,c){if(6===b.image.length)if(b.needsUpdate){b.image.__webglTextureCube||(b.addEventListener("dispose",Jc),b.image.__webglTextureCube=Jb.createTexture(),Pb.info.memory.textures++),Jb.activeTexture(Jb.TEXTURE0+c),Jb.bindTexture(Jb.TEXTURE_CUBE_MAP,b.image.__webglTextureCube),Jb.pixelStorei(Jb.UNPACK_FLIP_Y_WEBGL,b.flipY);for(var d=b instanceof a.CompressedTexture,e=[],f=0;6>f;f++)e[f]=Pb.autoScaleCubemaps&&!d?mb(b.image[f],yc):b.image[f];var g=e[0],h=a.Math.isPowerOfTwo(g.width)&&a.Math.isPowerOfTwo(g.height),i=tb(b.format),j=tb(b.type);lb(Jb.TEXTURE_CUBE_MAP,b,h);for(var f=0;6>f;f++)if(d)for(var k,l=e[f].mipmaps,m=0,n=l.length;n>m;m++)k=l[m],b.format!==a.RGBAFormat?Jb.compressedTexImage2D(Jb.TEXTURE_CUBE_MAP_POSITIVE_X+f,m,i,k.width,k.height,0,k.data):Jb.texImage2D(Jb.TEXTURE_CUBE_MAP_POSITIVE_X+f,m,i,k.width,k.height,0,i,j,k.data);else Jb.texImage2D(Jb.TEXTURE_CUBE_MAP_POSITIVE_X+f,0,i,i,j,e[f]);b.generateMipmaps&&h&&Jb.generateMipmap(Jb.TEXTURE_CUBE_MAP),b.needsUpdate=!1,b.onUpdate&&b.onUpdate()}else Jb.activeTexture(Jb.TEXTURE0+c),Jb.bindTexture(Jb.TEXTURE_CUBE_MAP,b.image.__webglTextureCube)}function ob(a,b){Jb.activeTexture(Jb.TEXTURE0+b),Jb.bindTexture(Jb.TEXTURE_CUBE_MAP,a.__webglTexture)}function pb(a,b,c){Jb.bindFramebuffer(Jb.FRAMEBUFFER,a),Jb.framebufferTexture2D(Jb.FRAMEBUFFER,Jb.COLOR_ATTACHMENT0,c,b.__webglTexture,0)}function qb(a,b){Jb.bindRenderbuffer(Jb.RENDERBUFFER,a),b.depthBuffer&&!b.stencilBuffer?(Jb.renderbufferStorage(Jb.RENDERBUFFER,Jb.DEPTH_COMPONENT16,b.width,b.height),Jb.framebufferRenderbuffer(Jb.FRAMEBUFFER,Jb.DEPTH_ATTACHMENT,Jb.RENDERBUFFER,a)):b.depthBuffer&&b.stencilBuffer?(Jb.renderbufferStorage(Jb.RENDERBUFFER,Jb.DEPTH_STENCIL,b.width,b.height),Jb.framebufferRenderbuffer(Jb.FRAMEBUFFER,Jb.DEPTH_STENCIL_ATTACHMENT,Jb.RENDERBUFFER,a)):Jb.renderbufferStorage(Jb.RENDERBUFFER,Jb.RGBA4,b.width,b.height)}function rb(b){b instanceof a.WebGLRenderTargetCube?(Jb.bindTexture(Jb.TEXTURE_CUBE_MAP,b.__webglTexture),Jb.generateMipmap(Jb.TEXTURE_CUBE_MAP),Jb.bindTexture(Jb.TEXTURE_CUBE_MAP,null)):(Jb.bindTexture(Jb.TEXTURE_2D,b.__webglTexture),Jb.generateMipmap(Jb.TEXTURE_2D),Jb.bindTexture(Jb.TEXTURE_2D,null))}function sb(b){return b===a.NearestFilter||b===a.NearestMipMapNearestFilter||b===a.NearestMipMapLinearFilter?Jb.NEAREST:Jb.LINEAR}function tb(b){if(b===a.RepeatWrapping)return Jb.REPEAT;if(b===a.ClampToEdgeWrapping)return Jb.CLAMP_TO_EDGE;if(b===a.MirroredRepeatWrapping)return Jb.MIRRORED_REPEAT;if(b===a.NearestFilter)return Jb.NEAREST;if(b===a.NearestMipMapNearestFilter)return Jb.NEAREST_MIPMAP_NEAREST;if(b===a.NearestMipMapLinearFilter)return Jb.NEAREST_MIPMAP_LINEAR;if(b===a.LinearFilter)return Jb.LINEAR;if(b===a.LinearMipMapNearestFilter)return Jb.LINEAR_MIPMAP_NEAREST;if(b===a.LinearMipMapLinearFilter)return Jb.LINEAR_MIPMAP_LINEAR;if(b===a.UnsignedByteType)return Jb.UNSIGNED_BYTE;if(b===a.UnsignedShort4444Type)return Jb.UNSIGNED_SHORT_4_4_4_4;if(b===a.UnsignedShort5551Type)return Jb.UNSIGNED_SHORT_5_5_5_1;if(b===a.UnsignedShort565Type)return Jb.UNSIGNED_SHORT_5_6_5;if(b===a.ByteType)return Jb.BYTE;if(b===a.ShortType)return Jb.SHORT;if(b===a.UnsignedShortType)return Jb.UNSIGNED_SHORT;if(b===a.IntType)return Jb.INT;if(b===a.UnsignedIntType)return Jb.UNSIGNED_INT;if(b===a.FloatType)return Jb.FLOAT;if(b===a.AlphaFormat)return Jb.ALPHA;if(b===a.RGBFormat)return Jb.RGB;if(b===a.RGBAFormat)return Jb.RGBA;if(b===a.LuminanceFormat)return Jb.LUMINANCE;if(b===a.LuminanceAlphaFormat)return Jb.LUMINANCE_ALPHA;if(b===a.AddEquation)return Jb.FUNC_ADD;if(b===a.SubtractEquation)return Jb.FUNC_SUBTRACT;if(b===a.ReverseSubtractEquation)return Jb.FUNC_REVERSE_SUBTRACT;if(b===a.ZeroFactor)return Jb.ZERO;if(b===a.OneFactor)return Jb.ONE;if(b===a.SrcColorFactor)return Jb.SRC_COLOR;if(b===a.OneMinusSrcColorFactor)return Jb.ONE_MINUS_SRC_COLOR;if(b===a.SrcAlphaFactor)return Jb.SRC_ALPHA;if(b===a.OneMinusSrcAlphaFactor)return Jb.ONE_MINUS_SRC_ALPHA;if(b===a.DstAlphaFactor)return Jb.DST_ALPHA;if(b===a.OneMinusDstAlphaFactor)return Jb.ONE_MINUS_DST_ALPHA;if(b===a.DstColorFactor)return Jb.DST_COLOR;if(b===a.OneMinusDstColorFactor)return Jb.ONE_MINUS_DST_COLOR;if(b===a.SrcAlphaSaturateFactor)return Jb.SRC_ALPHA_SATURATE;if(void 0!==Ob){if(b===a.RGB_S3TC_DXT1_Format)return Ob.COMPRESSED_RGB_S3TC_DXT1_EXT;if(b===a.RGBA_S3TC_DXT1_Format)return Ob.COMPRESSED_RGBA_S3TC_DXT1_EXT;if(b===a.RGBA_S3TC_DXT3_Format)return Ob.COMPRESSED_RGBA_S3TC_DXT3_EXT;if(b===a.RGBA_S3TC_DXT5_Format)return Ob.COMPRESSED_RGBA_S3TC_DXT5_EXT}return 0}function ub(b){if(Bc&&b&&b.useVertexTexture)return 1024;var c=Jb.getParameter(Jb.MAX_VERTEX_UNIFORM_VECTORS),d=Math.floor((c-20)/4),e=d;return void 0!==b&&b instanceof a.SkinnedMesh&&(e=Math.min(b.bones.length,e),eg;g++){var i=b[g];i.onlyShadow||i.visible===!1||(i instanceof a.DirectionalLight&&c++,i instanceof a.PointLight&&d++,i instanceof a.SpotLight&&e++,i instanceof a.HemisphereLight&&f++)}return{directional:c,point:d,spot:e,hemi:f}}function wb(b){for(var c=0,d=0,e=b.length;e>d;d++){var f=b[d];f.castShadow&&(f instanceof a.SpotLight&&c++,f instanceof a.DirectionalLight&&!f.shadowCascade&&c++)}return c}function xb(){try{var a={alpha:Cb,premultipliedAlpha:Db,antialias:Eb,stencil:Fb,preserveDrawingBuffer:Gb};if(Jb=Ab||zb.getContext("webgl",a)||zb.getContext("experimental-webgl",a),null===Jb)throw"Error creating WebGL context."}catch(b){console.error(b)}Kb=Jb.getExtension("OES_texture_float"),Lb=Jb.getExtension("OES_texture_float_linear"),Mb=Jb.getExtension("OES_standard_derivatives"),Nb=Jb.getExtension("EXT_texture_filter_anisotropic")||Jb.getExtension("MOZ_EXT_texture_filter_anisotropic")||Jb.getExtension("WEBKIT_EXT_texture_filter_anisotropic"),Ob=Jb.getExtension("WEBGL_compressed_texture_s3tc")||Jb.getExtension("MOZ_WEBGL_compressed_texture_s3tc")||Jb.getExtension("WEBKIT_WEBGL_compressed_texture_s3tc"),Kb||console.log("THREE.WebGLRenderer: Float textures not supported."),Mb||console.log("THREE.WebGLRenderer: Standard derivatives not supported."),Nb||console.log("THREE.WebGLRenderer: Anisotropic texture filtering not supported."),Ob||console.log("THREE.WebGLRenderer: S3TC compressed textures not supported."),void 0===Jb.getShaderPrecisionFormat&&(Jb.getShaderPrecisionFormat=function(){return{rangeMin:1,rangeMax:1,precision:1}})}function yb(){Jb.clearColor(0,0,0,1),Jb.clearDepth(1),Jb.clearStencil(0),Jb.enable(Jb.DEPTH_TEST),Jb.depthFunc(Jb.LEQUAL),Jb.frontFace(Jb.CCW),Jb.cullFace(Jb.BACK),Jb.enable(Jb.CULL_FACE),Jb.enable(Jb.BLEND),Jb.blendEquation(Jb.FUNC_ADD),Jb.blendFunc(Jb.SRC_ALPHA,Jb.ONE_MINUS_SRC_ALPHA),Jb.viewport(ic,jc,kc,lc),Jb.clearColor(Hb.r,Hb.g,Hb.b,Ib)}console.log("THREE.WebGLRenderer",a.REVISION),b=b||{};var zb=void 0!==b.canvas?b.canvas:document.createElement("canvas"),Ab=void 0!==b.context?b.context:null,Bb=void 0!==b.precision?b.precision:"highp",Cb=void 0!==b.alpha?b.alpha:!1,Db=void 0!==b.premultipliedAlpha?b.premultipliedAlpha:!0,Eb=void 0!==b.antialias?b.antialias:!1,Fb=void 0!==b.stencil?b.stencil:!0,Gb=void 0!==b.preserveDrawingBuffer?b.preserveDrawingBuffer:!1,Hb=new a.Color(0),Ib=0;this.domElement=zb,this.context=null,this.devicePixelRatio=void 0!==b.devicePixelRatio?b.devicePixelRatio:void 0!==self.devicePixelRatio?self.devicePixelRatio:1,this.autoClear=!0,this.autoClearColor=!0,this.autoClearDepth=!0,this.autoClearStencil=!0,this.sortObjects=!0,this.autoUpdateObjects=!0,this.gammaInput=!1,this.gammaOutput=!1,this.shadowMapEnabled=!1,this.shadowMapAutoUpdate=!0,this.shadowMapType=a.PCFShadowMap,this.shadowMapCullFace=a.CullFaceFront,this.shadowMapDebug=!1,this.shadowMapCascade=!1,this.maxMorphTargets=8,this.maxMorphNormals=4,this.autoScaleCubemaps=!0,this.renderPluginsPre=[],this.renderPluginsPost=[],this.info={memory:{programs:0,geometries:0,textures:0},render:{calls:0,vertices:0,faces:0,points:0}};var Jb,Kb,Lb,Mb,Nb,Ob,Pb=this,Qb=[],Rb=0,Sb=null,Tb=null,Ub=-1,Vb=null,Wb=null,Xb=0,Yb=-1,Zb=-1,$b=-1,_b=-1,ac=-1,bc=-1,cc=-1,dc=-1,ec=null,fc=null,gc=null,hc=null,ic=0,jc=0,kc=zb.width,lc=zb.height,mc=0,nc=0,oc=new Uint8Array(16),pc=new a.Frustum,qc=new a.Matrix4,rc=new a.Matrix4,sc=new a.Vector3,tc=new a.Vector3,uc=!0,vc={ambient:[0,0,0],directional:{length:0,colors:new Array,positions:new Array},point:{length:0,colors:new Array,positions:new Array,distances:new Array},spot:{length:0,colors:new Array,positions:new Array,distances:new Array,directions:new Array,anglesCos:new Array,exponents:new Array},hemi:{length:0,skyColors:new Array,groundColors:new Array,positions:new Array}};xb(),yb(),this.context=Jb;var wc=Jb.getParameter(Jb.MAX_TEXTURE_IMAGE_UNITS),xc=Jb.getParameter(Jb.MAX_VERTEX_TEXTURE_IMAGE_UNITS),yc=(Jb.getParameter(Jb.MAX_TEXTURE_SIZE),Jb.getParameter(Jb.MAX_CUBE_MAP_TEXTURE_SIZE)),zc=Nb?Jb.getParameter(Nb.MAX_TEXTURE_MAX_ANISOTROPY_EXT):0,Ac=xc>0,Bc=Ac&&Kb,Cc=(Ob?Jb.getParameter(Jb.COMPRESSED_TEXTURE_FORMATS):[],Jb.getShaderPrecisionFormat(Jb.VERTEX_SHADER,Jb.HIGH_FLOAT)),Dc=Jb.getShaderPrecisionFormat(Jb.VERTEX_SHADER,Jb.MEDIUM_FLOAT),Ec=(Jb.getShaderPrecisionFormat(Jb.VERTEX_SHADER,Jb.LOW_FLOAT),Jb.getShaderPrecisionFormat(Jb.FRAGMENT_SHADER,Jb.HIGH_FLOAT)),Fc=Jb.getShaderPrecisionFormat(Jb.FRAGMENT_SHADER,Jb.MEDIUM_FLOAT),Gc=(Jb.getShaderPrecisionFormat(Jb.FRAGMENT_SHADER,Jb.LOW_FLOAT),Jb.getShaderPrecisionFormat(Jb.VERTEX_SHADER,Jb.HIGH_INT),Jb.getShaderPrecisionFormat(Jb.VERTEX_SHADER,Jb.MEDIUM_INT),Jb.getShaderPrecisionFormat(Jb.VERTEX_SHADER,Jb.LOW_INT),Jb.getShaderPrecisionFormat(Jb.FRAGMENT_SHADER,Jb.HIGH_INT),Jb.getShaderPrecisionFormat(Jb.FRAGMENT_SHADER,Jb.MEDIUM_INT),Jb.getShaderPrecisionFormat(Jb.FRAGMENT_SHADER,Jb.LOW_INT),Cc.precision>0&&Ec.precision>0),Hc=Dc.precision>0&&Fc.precision>0;"highp"!==Bb||Gc||(Hc?(Bb="mediump",console.warn("WebGLRenderer: highp not supported, using mediump")):(Bb="lowp",console.warn("WebGLRenderer: highp and mediump not supported, using lowp"))),"mediump"!==Bb||Hc||(Bb="lowp",console.warn("WebGLRenderer: mediump not supported, using lowp")),this.getContext=function(){return Jb},this.supportsVertexTextures=function(){return Ac},this.supportsFloatTextures=function(){return Kb},this.supportsStandardDerivatives=function(){return Mb},this.supportsCompressedTextureS3TC=function(){return Ob},this.getMaxAnisotropy=function(){return zc},this.getPrecision=function(){return Bb},this.setSize=function(a,b,c){zb.width=a*this.devicePixelRatio,zb.height=b*this.devicePixelRatio,1!==this.devicePixelRatio&&c!==!1&&(zb.style.width=a+"px",zb.style.height=b+"px"),this.setViewport(0,0,a,b)},this.setViewport=function(a,b,c,d){ic=a*this.devicePixelRatio,jc=b*this.devicePixelRatio,kc=c*this.devicePixelRatio,lc=d*this.devicePixelRatio,Jb.viewport(ic,jc,kc,lc)},this.setScissor=function(a,b,c,d){Jb.scissor(a*this.devicePixelRatio,b*this.devicePixelRatio,c*this.devicePixelRatio,d*this.devicePixelRatio)},this.enableScissorTest=function(a){a?Jb.enable(Jb.SCISSOR_TEST):Jb.disable(Jb.SCISSOR_TEST)},this.setClearColor=function(a,b){Hb.set(a),Ib=void 0!==b?b:1,Jb.clearColor(Hb.r,Hb.g,Hb.b,Ib)},this.setClearColorHex=function(a,b){console.warn("DEPRECATED: .setClearColorHex() is being removed. Use .setClearColor() instead."),this.setClearColor(a,b)},this.getClearColor=function(){return Hb},this.getClearAlpha=function(){return Ib},this.clear=function(a,b,c){var d=0;(void 0===a||a)&&(d|=Jb.COLOR_BUFFER_BIT),(void 0===b||b)&&(d|=Jb.DEPTH_BUFFER_BIT),(void 0===c||c)&&(d|=Jb.STENCIL_BUFFER_BIT),Jb.clear(d)},this.clearColor=function(){Jb.clear(Jb.COLOR_BUFFER_BIT)},this.clearDepth=function(){Jb.clear(Jb.DEPTH_BUFFER_BIT)},this.clearStencil=function(){Jb.clear(Jb.STENCIL_BUFFER_BIT)},this.clearTarget=function(a,b,c,d){this.setRenderTarget(a),this.clear(b,c,d)},this.addPostPlugin=function(a){a.init(this),this.renderPluginsPost.push(a)},this.addPrePlugin=function(a){a.init(this),this.renderPluginsPre.push(a)},this.updateShadowMap=function(a,b){Sb=null,$b=-1,cc=-1,dc=-1,Vb=-1,Ub=-1,uc=!0,Yb=-1,Zb=-1,this.shadowMapPlugin.update(a,b)};var Ic=function(a){var b=a.target;b.removeEventListener("dispose",Ic),Nc(b)},Jc=function(a){var b=a.target;b.removeEventListener("dispose",Jc),Oc(b),Pb.info.memory.textures--},Kc=function(a){var b=a.target;b.removeEventListener("dispose",Kc),Pc(b),Pb.info.memory.textures--},Lc=function(a){var b=a.target;b.removeEventListener("dispose",Lc),Qc(b)},Mc=function(a){if(void 0!==a.__webglVertexBuffer&&Jb.deleteBuffer(a.__webglVertexBuffer),void 0!==a.__webglNormalBuffer&&Jb.deleteBuffer(a.__webglNormalBuffer),void 0!==a.__webglTangentBuffer&&Jb.deleteBuffer(a.__webglTangentBuffer),void 0!==a.__webglColorBuffer&&Jb.deleteBuffer(a.__webglColorBuffer),void 0!==a.__webglUVBuffer&&Jb.deleteBuffer(a.__webglUVBuffer),void 0!==a.__webglUV2Buffer&&Jb.deleteBuffer(a.__webglUV2Buffer),void 0!==a.__webglSkinIndicesBuffer&&Jb.deleteBuffer(a.__webglSkinIndicesBuffer),void 0!==a.__webglSkinWeightsBuffer&&Jb.deleteBuffer(a.__webglSkinWeightsBuffer),void 0!==a.__webglFaceBuffer&&Jb.deleteBuffer(a.__webglFaceBuffer),void 0!==a.__webglLineBuffer&&Jb.deleteBuffer(a.__webglLineBuffer),void 0!==a.__webglLineDistanceBuffer&&Jb.deleteBuffer(a.__webglLineDistanceBuffer),void 0!==a.__webglCustomAttributesList)for(var b in a.__webglCustomAttributesList)Jb.deleteBuffer(a.__webglCustomAttributesList[b].buffer);Pb.info.memory.geometries--},Nc=function(b){if(b.__webglInit=void 0,b instanceof a.BufferGeometry){var c=b.attributes;for(var d in c)void 0!==c[d].buffer&&Jb.deleteBuffer(c[d].buffer);Pb.info.memory.geometries--}else if(void 0!==b.geometryGroups)for(var e in b.geometryGroups){var f=b.geometryGroups[e];if(void 0!==f.numMorphTargets)for(var g=0,h=f.numMorphTargets;h>g;g++)Jb.deleteBuffer(f.__webglMorphTargetsBuffers[g]);if(void 0!==f.numMorphNormals)for(var g=0,h=f.numMorphNormals;h>g;g++)Jb.deleteBuffer(f.__webglMorphNormalsBuffers[g]);Mc(f)}else Mc(b)},Oc=function(a){if(a.image&&a.image.__webglTextureCube)Jb.deleteTexture(a.image.__webglTextureCube);else{if(!a.__webglInit)return;a.__webglInit=!1,Jb.deleteTexture(a.__webglTexture)}},Pc=function(b){if(b&&b.__webglTexture)if(Jb.deleteTexture(b.__webglTexture),b instanceof a.WebGLRenderTargetCube)for(var c=0;6>c;c++)Jb.deleteFramebuffer(b.__webglFramebuffer[c]),Jb.deleteRenderbuffer(b.__webglRenderbuffer[c]);else Jb.deleteFramebuffer(b.__webglFramebuffer),Jb.deleteRenderbuffer(b.__webglRenderbuffer)},Qc=function(a){var b=a.program;if(void 0!==b){a.program=void 0;var c,d,e,f=!1;for(c=0,d=Qb.length;d>c;c++)if(e=Qb[c],e.program===b){e.usedTimes--,0===e.usedTimes&&(f=!0);break}if(f===!0){var g=[];for(c=0,d=Qb.length;d>c;c++)e=Qb[c],e.program!==b&&g.push(e);Qb=g,Jb.deleteProgram(b),Pb.info.memory.programs--}}};this.renderBufferImmediate=function(b,c,d){if(b.hasPositions&&!b.__webglVertexBuffer&&(b.__webglVertexBuffer=Jb.createBuffer()),b.hasNormals&&!b.__webglNormalBuffer&&(b.__webglNormalBuffer=Jb.createBuffer()),b.hasUvs&&!b.__webglUvBuffer&&(b.__webglUvBuffer=Jb.createBuffer()),b.hasColors&&!b.__webglColorBuffer&&(b.__webglColorBuffer=Jb.createBuffer()),b.hasPositions&&(Jb.bindBuffer(Jb.ARRAY_BUFFER,b.__webglVertexBuffer),Jb.bufferData(Jb.ARRAY_BUFFER,b.positionArray,Jb.DYNAMIC_DRAW),Jb.enableVertexAttribArray(c.attributes.position),Jb.vertexAttribPointer(c.attributes.position,3,Jb.FLOAT,!1,0,0)),b.hasNormals){if(Jb.bindBuffer(Jb.ARRAY_BUFFER,b.__webglNormalBuffer),d.shading===a.FlatShading){var e,f,g,h,i,j,k,l,m,n,o,p,q,r,s=3*b.count;for(r=0;s>r;r+=9)q=b.normalArray,h=q[r],k=q[r+1],n=q[r+2],i=q[r+3],l=q[r+4],o=q[r+5],j=q[r+6],m=q[r+7],p=q[r+8],e=(h+i+j)/3,f=(k+l+m)/3,g=(n+o+p)/3,q[r]=e,q[r+1]=f,q[r+2]=g,q[r+3]=e,q[r+4]=f,q[r+5]=g,q[r+6]=e,q[r+7]=f,q[r+8]=g}Jb.bufferData(Jb.ARRAY_BUFFER,b.normalArray,Jb.DYNAMIC_DRAW),Jb.enableVertexAttribArray(c.attributes.normal),Jb.vertexAttribPointer(c.attributes.normal,3,Jb.FLOAT,!1,0,0)}b.hasUvs&&d.map&&(Jb.bindBuffer(Jb.ARRAY_BUFFER,b.__webglUvBuffer),Jb.bufferData(Jb.ARRAY_BUFFER,b.uvArray,Jb.DYNAMIC_DRAW),Jb.enableVertexAttribArray(c.attributes.uv),Jb.vertexAttribPointer(c.attributes.uv,2,Jb.FLOAT,!1,0,0)),b.hasColors&&d.vertexColors!==a.NoColors&&(Jb.bindBuffer(Jb.ARRAY_BUFFER,b.__webglColorBuffer),Jb.bufferData(Jb.ARRAY_BUFFER,b.colorArray,Jb.DYNAMIC_DRAW),Jb.enableVertexAttribArray(c.attributes.color),Jb.vertexAttribPointer(c.attributes.color,3,Jb.FLOAT,!1,0,0)),Jb.drawArrays(Jb.TRIANGLES,0,b.count),b.count=0},this.renderBufferDirect=function(b,c,d,e,f,g){if(e.visible!==!1){var h,i,j,k,l=O(b,c,d,e,g),m=l.attributes,n=f.attributes,o=!1,p=e.wireframe?1:0,q=16777215*f.id+2*l.id+p;if(q!==Vb&&(Vb=q,o=!0),o&&v(),g instanceof a.Mesh){var r=n.index;if(r){var t=f.offsets;t.length>1&&(o=!0);for(var w=0,x=t.length;x>w;w++){var y=t[w].index;if(o){for(i in m)j=m[i],h=n[i],j>=0&&(h?(k=h.itemSize,Jb.bindBuffer(Jb.ARRAY_BUFFER,h.buffer),u(j),Jb.vertexAttribPointer(j,k,Jb.FLOAT,!1,0,y*k*4)):e.defaultAttributeValues&&(2===e.defaultAttributeValues[i].length?Jb.vertexAttrib2fv(j,e.defaultAttributeValues[i]):3===e.defaultAttributeValues[i].length&&Jb.vertexAttrib3fv(j,e.defaultAttributeValues[i])));Jb.bindBuffer(Jb.ELEMENT_ARRAY_BUFFER,r.buffer)}Jb.drawElements(Jb.TRIANGLES,t[w].count,Jb.UNSIGNED_SHORT,2*t[w].start),Pb.info.render.calls++,Pb.info.render.vertices+=t[w].count,Pb.info.render.faces+=t[w].count/3}}else{if(o)for(i in m)"index"!==i&&(j=m[i],h=n[i],j>=0&&(h?(k=h.itemSize,Jb.bindBuffer(Jb.ARRAY_BUFFER,h.buffer),u(j),Jb.vertexAttribPointer(j,k,Jb.FLOAT,!1,0,0)):e.defaultAttributeValues&&e.defaultAttributeValues[i]&&(2===e.defaultAttributeValues[i].length?Jb.vertexAttrib2fv(j,e.defaultAttributeValues[i]):3===e.defaultAttributeValues[i].length&&Jb.vertexAttrib3fv(j,e.defaultAttributeValues[i]))));var z=f.attributes.position;Jb.drawArrays(Jb.TRIANGLES,0,z.array.length/3),Pb.info.render.calls++,Pb.info.render.vertices+=z.array.length/3,Pb.info.render.faces+=z.array.length/3/3}}else if(g instanceof a.ParticleSystem){if(o)for(i in m)j=m[i],h=n[i],j>=0&&(h?(k=h.itemSize,Jb.bindBuffer(Jb.ARRAY_BUFFER,h.buffer),u(j),Jb.vertexAttribPointer(j,k,Jb.FLOAT,!1,0,0)):e.defaultAttributeValues&&e.defaultAttributeValues[i]&&(2===e.defaultAttributeValues[i].length?Jb.vertexAttrib2fv(j,e.defaultAttributeValues[i]):3===e.defaultAttributeValues[i].length&&Jb.vertexAttrib3fv(j,e.defaultAttributeValues[i])));var z=n.position;Jb.drawArrays(Jb.POINTS,0,z.array.length/3),Pb.info.render.calls++,Pb.info.render.points+=z.array.length/3}else if(g instanceof a.Line){var A=g.type===a.LineStrip?Jb.LINE_STRIP:Jb.LINES;db(e.linewidth);var r=n.index;if(r){var t=f.offsets;t.length>1&&(o=!0);for(var w=0,x=t.length;x>w;w++){var y=t[w].index;o&&(s(e,m,n,y),Jb.bindBuffer(Jb.ELEMENT_ARRAY_BUFFER,r.buffer)),Jb.drawElements(Jb.LINES,t[w].count,Jb.UNSIGNED_SHORT,2*t[w].start),Pb.info.render.calls++,Pb.info.render.vertices+=t[w].count}}else{o&&s(e,m,n,0);var z=n.position;Jb.drawArrays(A,0,z.array.length/3),Pb.info.render.calls++,Pb.info.render.points+=z.array.length}}}},this.renderBuffer=function(b,c,d,e,f,g){if(e.visible!==!1){var h,i,j,k=O(b,c,d,e,g),l=k.attributes,m=!1,n=e.wireframe?1:0,o=16777215*f.id+2*k.id+n;if(o!==Vb&&(Vb=o,m=!0),m&&v(),!e.morphTargets&&l.position>=0?m&&(Jb.bindBuffer(Jb.ARRAY_BUFFER,f.__webglVertexBuffer),u(l.position),Jb.vertexAttribPointer(l.position,3,Jb.FLOAT,!1,0,0)):g.morphTargetBase&&w(e,f,g),m){if(f.__webglCustomAttributesList)for(i=0,j=f.__webglCustomAttributesList.length;j>i;i++)h=f.__webglCustomAttributesList[i],l[h.buffer.belongsToAttribute]>=0&&(Jb.bindBuffer(Jb.ARRAY_BUFFER,h.buffer),u(l[h.buffer.belongsToAttribute]),Jb.vertexAttribPointer(l[h.buffer.belongsToAttribute],h.size,Jb.FLOAT,!1,0,0));l.color>=0&&(g.geometry.colors.length>0||g.geometry.faces.length>0?(Jb.bindBuffer(Jb.ARRAY_BUFFER,f.__webglColorBuffer),u(l.color),Jb.vertexAttribPointer(l.color,3,Jb.FLOAT,!1,0,0)):e.defaultAttributeValues&&Jb.vertexAttrib3fv(l.color,e.defaultAttributeValues.color)),l.normal>=0&&(Jb.bindBuffer(Jb.ARRAY_BUFFER,f.__webglNormalBuffer),u(l.normal),Jb.vertexAttribPointer(l.normal,3,Jb.FLOAT,!1,0,0)),l.tangent>=0&&(Jb.bindBuffer(Jb.ARRAY_BUFFER,f.__webglTangentBuffer),u(l.tangent),Jb.vertexAttribPointer(l.tangent,4,Jb.FLOAT,!1,0,0)),l.uv>=0&&(g.geometry.faceVertexUvs[0]?(Jb.bindBuffer(Jb.ARRAY_BUFFER,f.__webglUVBuffer),u(l.uv),Jb.vertexAttribPointer(l.uv,2,Jb.FLOAT,!1,0,0)):e.defaultAttributeValues&&Jb.vertexAttrib2fv(l.uv,e.defaultAttributeValues.uv)),l.uv2>=0&&(g.geometry.faceVertexUvs[1]?(Jb.bindBuffer(Jb.ARRAY_BUFFER,f.__webglUV2Buffer),u(l.uv2),Jb.vertexAttribPointer(l.uv2,2,Jb.FLOAT,!1,0,0)):e.defaultAttributeValues&&Jb.vertexAttrib2fv(l.uv2,e.defaultAttributeValues.uv2)),e.skinning&&l.skinIndex>=0&&l.skinWeight>=0&&(Jb.bindBuffer(Jb.ARRAY_BUFFER,f.__webglSkinIndicesBuffer),u(l.skinIndex),Jb.vertexAttribPointer(l.skinIndex,4,Jb.FLOAT,!1,0,0),Jb.bindBuffer(Jb.ARRAY_BUFFER,f.__webglSkinWeightsBuffer),u(l.skinWeight),Jb.vertexAttribPointer(l.skinWeight,4,Jb.FLOAT,!1,0,0)),l.lineDistance>=0&&(Jb.bindBuffer(Jb.ARRAY_BUFFER,f.__webglLineDistanceBuffer),u(l.lineDistance),Jb.vertexAttribPointer(l.lineDistance,1,Jb.FLOAT,!1,0,0))}if(g instanceof a.Mesh)e.wireframe?(db(e.wireframeLinewidth),m&&Jb.bindBuffer(Jb.ELEMENT_ARRAY_BUFFER,f.__webglLineBuffer),Jb.drawElements(Jb.LINES,f.__webglLineCount,Jb.UNSIGNED_SHORT,0)):(m&&Jb.bindBuffer(Jb.ELEMENT_ARRAY_BUFFER,f.__webglFaceBuffer),Jb.drawElements(Jb.TRIANGLES,f.__webglFaceCount,Jb.UNSIGNED_SHORT,0)),Pb.info.render.calls++,Pb.info.render.vertices+=f.__webglFaceCount,Pb.info.render.faces+=f.__webglFaceCount/3;else if(g instanceof a.Line){var p=g.type===a.LineStrip?Jb.LINE_STRIP:Jb.LINES;db(e.linewidth),Jb.drawArrays(p,0,f.__webglLineCount),Pb.info.render.calls++}else g instanceof a.ParticleSystem&&(Jb.drawArrays(Jb.POINTS,0,f.__webglParticleCount),Pb.info.render.calls++,Pb.info.render.points+=f.__webglParticleCount)}},this.render=function(b,c,d,e){if(c instanceof a.Camera==!1)return void console.error("THREE.WebGLRenderer.render: camera is not an instance of THREE.Camera.");var f,g,h,i,j,k=b.__lights,l=b.fog;for(Ub=-1,uc=!0,b.autoUpdate===!0&&b.updateMatrixWorld(),void 0===c.parent&&c.updateMatrixWorld(),c.matrixWorldInverse.getInverse(c.matrixWorld),qc.multiplyMatrices(c.projectionMatrix,c.matrixWorldInverse),pc.setFromMatrix(qc),this.autoUpdateObjects&&this.initWebGLObjects(b),z(this.renderPluginsPre,b,c),Pb.info.render.calls=0,Pb.info.render.vertices=0,Pb.info.render.faces=0,Pb.info.render.points=0,this.setRenderTarget(d),(this.autoClear||e)&&this.clear(this.autoClearColor,this.autoClearDepth,this.autoClearStencil),j=b.__webglObjects,f=0,g=j.length;g>f;f++)h=j[f],i=h.object,h.id=f,h.render=!1,i.visible&&((i instanceof a.Mesh||i instanceof a.ParticleSystem)&&i.frustumCulled&&!pc.intersectsObject(i)||(_(i,c),D(h),h.render=!0,this.sortObjects===!0&&(null!==i.renderDepth?h.z=i.renderDepth:(sc.setFromMatrixPosition(i.matrixWorld),sc.applyProjection(qc),h.z=sc.z))));for(this.sortObjects&&j.sort(x),j=b.__webglObjectsImmediate,f=0,g=j.length;g>f;f++)h=j[f],i=h.object,i.visible&&(_(i,c),C(h));if(b.overrideMaterial){var m=b.overrideMaterial;this.setBlending(m.blending,m.blendEquation,m.blendSrc,m.blendDst),this.setDepthTest(m.depthTest),this.setDepthWrite(m.depthWrite),eb(m.polygonOffset,m.polygonOffsetFactor,m.polygonOffsetUnits),A(b.__webglObjects,!1,"",c,k,l,!0,m),B(b.__webglObjectsImmediate,"",c,k,l,!1,m)}else{var m=null;this.setBlending(a.NoBlending),A(b.__webglObjects,!0,"opaque",c,k,l,!1,m),B(b.__webglObjectsImmediate,"opaque",c,k,l,!1,m),A(b.__webglObjects,!1,"transparent",c,k,l,!0,m),B(b.__webglObjectsImmediate,"transparent",c,k,l,!0,m)}z(this.renderPluginsPost,b,c),d&&d.generateMipmaps&&d.minFilter!==a.NearestFilter&&d.minFilter!==a.LinearFilter&&rb(d),this.setDepthTest(!0),this.setDepthWrite(!0)},this.renderImmediateObject=function(a,b,c,d,e){var f=O(a,b,c,d,e);Vb=-1,Pb.setMaterialFaces(d),e.immediateRenderCallback?e.immediateRenderCallback(f,Jb,pc):e.render(function(a){Pb.renderBufferImmediate(a,f,d)})},this.initWebGLObjects=function(a){for(a.__webglObjects||(a.__webglObjects=[],a.__webglObjectsImmediate=[],a.__webglSprites=[],a.__webglFlares=[]);a.__objectsAdded.length;)E(a.__objectsAdded[0],a),a.__objectsAdded.splice(0,1);for(;a.__objectsRemoved.length;)K(a.__objectsRemoved[0],a),a.__objectsRemoved.splice(0,1);for(var b=0,c=a.__webglObjects.length;c>b;b++){var d=a.__webglObjects[b].object;void 0===d.__webglInit&&(void 0!==d.__webglActive&&K(d,a),E(d,a)),H(d)}},this.initMaterial=function(b,c,d,e){b.addEventListener("dispose",Lc);var f,g,h,i,j,k,l;b instanceof a.MeshDepthMaterial?l="depth":b instanceof a.MeshNormalMaterial?l="normal":b instanceof a.MeshBasicMaterial?l="basic":b instanceof a.MeshLambertMaterial?l="lambert":b instanceof a.MeshPhongMaterial?l="phong":b instanceof a.LineBasicMaterial?l="basic":b instanceof a.LineDashedMaterial?l="dashed":b instanceof a.ParticleSystemMaterial&&(l="particle_basic"),l&&N(b,a.ShaderLib[l]),i=vb(c),k=wb(c),j=ub(e),h={map:!!b.map,envMap:!!b.envMap,lightMap:!!b.lightMap,bumpMap:!!b.bumpMap,normalMap:!!b.normalMap,specularMap:!!b.specularMap,vertexColors:b.vertexColors,fog:d,useFog:b.fog,fogExp:d instanceof a.FogExp2,sizeAttenuation:b.sizeAttenuation,skinning:b.skinning,maxBones:j,useVertexTexture:Bc&&e&&e.useVertexTexture,morphTargets:b.morphTargets,morphNormals:b.morphNormals,maxMorphTargets:this.maxMorphTargets,maxMorphNormals:this.maxMorphNormals,maxDirLights:i.directional,maxPointLights:i.point,maxSpotLights:i.spot,maxHemiLights:i.hemi,maxShadows:k,shadowMapEnabled:this.shadowMapEnabled&&e.receiveShadow&&k>0,shadowMapType:this.shadowMapType,shadowMapDebug:this.shadowMapDebug,shadowMapCascade:this.shadowMapCascade,alphaTest:b.alphaTest,metal:b.metal,wrapAround:b.wrapAround,doubleSided:b.side===a.DoubleSide,flipSided:b.side===a.BackSide},b.program=gb(l,b.fragmentShader,b.vertexShader,b.uniforms,b.attributes,b.defines,h,b.index0AttributeName);var m=b.program.attributes;if(b.morphTargets){b.numSupportedMorphTargets=0;var n,o="morphTarget";for(g=0;g=0&&b.numSupportedMorphTargets++}if(b.morphNormals){b.numSupportedMorphNormals=0;var n,o="morphNormal";for(g=0;g=0&&b.numSupportedMorphNormals++}b.uniformsList=[];for(f in b.uniforms)b.uniformsList.push([b.uniforms[f],f])},this.setFaceCulling=function(b,c){b===a.CullFaceNone?Jb.disable(Jb.CULL_FACE):(Jb.frontFace(c===a.FrontFaceDirectionCW?Jb.CW:Jb.CCW),Jb.cullFace(b===a.CullFaceBack?Jb.BACK:b===a.CullFaceFront?Jb.FRONT:Jb.FRONT_AND_BACK),Jb.enable(Jb.CULL_FACE))},this.setMaterialFaces=function(b){var c=b.side===a.DoubleSide,d=b.side===a.BackSide;Yb!==c&&(c?Jb.disable(Jb.CULL_FACE):Jb.enable(Jb.CULL_FACE),Yb=c),Zb!==d&&(Jb.frontFace(d?Jb.CW:Jb.CCW),Zb=d)},this.setDepthTest=function(a){cc!==a&&(a?Jb.enable(Jb.DEPTH_TEST):Jb.disable(Jb.DEPTH_TEST),cc=a)},this.setDepthWrite=function(a){dc!==a&&(Jb.depthMask(a),dc=a)},this.setBlending=function(b,c,d,e){b!==$b&&(b===a.NoBlending?Jb.disable(Jb.BLEND):b===a.AdditiveBlending?(Jb.enable(Jb.BLEND),Jb.blendEquation(Jb.FUNC_ADD),Jb.blendFunc(Jb.SRC_ALPHA,Jb.ONE)):b===a.SubtractiveBlending?(Jb.enable(Jb.BLEND),Jb.blendEquation(Jb.FUNC_ADD),Jb.blendFunc(Jb.ZERO,Jb.ONE_MINUS_SRC_COLOR)):b===a.MultiplyBlending?(Jb.enable(Jb.BLEND),Jb.blendEquation(Jb.FUNC_ADD),Jb.blendFunc(Jb.ZERO,Jb.SRC_COLOR)):b===a.CustomBlending?Jb.enable(Jb.BLEND):(Jb.enable(Jb.BLEND),Jb.blendEquationSeparate(Jb.FUNC_ADD,Jb.FUNC_ADD),Jb.blendFuncSeparate(Jb.SRC_ALPHA,Jb.ONE_MINUS_SRC_ALPHA,Jb.ONE,Jb.ONE_MINUS_SRC_ALPHA)),$b=b),b===a.CustomBlending?(c!==_b&&(Jb.blendEquation(tb(c)),_b=c),(d!==ac||e!==bc)&&(Jb.blendFunc(tb(d),tb(e)),ac=d,bc=e)):(_b=null,ac=null,bc=null)},this.setTexture=function(b,c){if(b.needsUpdate){b.__webglInit||(b.__webglInit=!0,b.addEventListener("dispose",Jc),b.__webglTexture=Jb.createTexture(),Pb.info.memory.textures++),Jb.activeTexture(Jb.TEXTURE0+c),Jb.bindTexture(Jb.TEXTURE_2D,b.__webglTexture),Jb.pixelStorei(Jb.UNPACK_FLIP_Y_WEBGL,b.flipY),Jb.pixelStorei(Jb.UNPACK_PREMULTIPLY_ALPHA_WEBGL,b.premultiplyAlpha),Jb.pixelStorei(Jb.UNPACK_ALIGNMENT,b.unpackAlignment);var d=b.image,e=a.Math.isPowerOfTwo(d.width)&&a.Math.isPowerOfTwo(d.height),f=tb(b.format),g=tb(b.type);lb(Jb.TEXTURE_2D,b,e);var h,i=b.mipmaps;if(b instanceof a.DataTexture)if(i.length>0&&e){for(var j=0,k=i.length;k>j;j++)h=i[j],Jb.texImage2D(Jb.TEXTURE_2D,j,f,h.width,h.height,0,f,g,h.data);b.generateMipmaps=!1}else Jb.texImage2D(Jb.TEXTURE_2D,0,f,d.width,d.height,0,f,g,d.data);else if(b instanceof a.CompressedTexture)for(var j=0,k=i.length;k>j;j++)h=i[j],b.format!==a.RGBAFormat?Jb.compressedTexImage2D(Jb.TEXTURE_2D,j,f,h.width,h.height,0,h.data):Jb.texImage2D(Jb.TEXTURE_2D,j,f,h.width,h.height,0,f,g,h.data);else if(i.length>0&&e){for(var j=0,k=i.length;k>j;j++)h=i[j],Jb.texImage2D(Jb.TEXTURE_2D,j,f,f,g,h);b.generateMipmaps=!1}else Jb.texImage2D(Jb.TEXTURE_2D,0,f,f,g,b.image);b.generateMipmaps&&e&&Jb.generateMipmap(Jb.TEXTURE_2D),b.needsUpdate=!1,b.onUpdate&&b.onUpdate()}else Jb.activeTexture(Jb.TEXTURE0+c),Jb.bindTexture(Jb.TEXTURE_2D,b.__webglTexture)},this.setRenderTarget=function(b){var c=b instanceof a.WebGLRenderTargetCube;if(b&&!b.__webglFramebuffer){void 0===b.depthBuffer&&(b.depthBuffer=!0),void 0===b.stencilBuffer&&(b.stencilBuffer=!0),b.addEventListener("dispose",Kc),b.__webglTexture=Jb.createTexture(),Pb.info.memory.textures++;var d=a.Math.isPowerOfTwo(b.width)&&a.Math.isPowerOfTwo(b.height),e=tb(b.format),f=tb(b.type);if(c){b.__webglFramebuffer=[],b.__webglRenderbuffer=[],Jb.bindTexture(Jb.TEXTURE_CUBE_MAP,b.__webglTexture),lb(Jb.TEXTURE_CUBE_MAP,b,d);for(var g=0;6>g;g++)b.__webglFramebuffer[g]=Jb.createFramebuffer(),b.__webglRenderbuffer[g]=Jb.createRenderbuffer(),Jb.texImage2D(Jb.TEXTURE_CUBE_MAP_POSITIVE_X+g,0,e,b.width,b.height,0,e,f,null),pb(b.__webglFramebuffer[g],b,Jb.TEXTURE_CUBE_MAP_POSITIVE_X+g),qb(b.__webglRenderbuffer[g],b);d&&Jb.generateMipmap(Jb.TEXTURE_CUBE_MAP)}else b.__webglFramebuffer=Jb.createFramebuffer(),b.__webglRenderbuffer=b.shareDepthFrom?b.shareDepthFrom.__webglRenderbuffer:Jb.createRenderbuffer(),Jb.bindTexture(Jb.TEXTURE_2D,b.__webglTexture),lb(Jb.TEXTURE_2D,b,d),Jb.texImage2D(Jb.TEXTURE_2D,0,e,b.width,b.height,0,e,f,null),pb(b.__webglFramebuffer,b,Jb.TEXTURE_2D),b.shareDepthFrom?b.depthBuffer&&!b.stencilBuffer?Jb.framebufferRenderbuffer(Jb.FRAMEBUFFER,Jb.DEPTH_ATTACHMENT,Jb.RENDERBUFFER,b.__webglRenderbuffer):b.depthBuffer&&b.stencilBuffer&&Jb.framebufferRenderbuffer(Jb.FRAMEBUFFER,Jb.DEPTH_STENCIL_ATTACHMENT,Jb.RENDERBUFFER,b.__webglRenderbuffer):qb(b.__webglRenderbuffer,b),d&&Jb.generateMipmap(Jb.TEXTURE_2D);c?Jb.bindTexture(Jb.TEXTURE_CUBE_MAP,null):Jb.bindTexture(Jb.TEXTURE_2D,null),Jb.bindRenderbuffer(Jb.RENDERBUFFER,null),Jb.bindFramebuffer(Jb.FRAMEBUFFER,null)}var h,i,j,k,l;b?(h=c?b.__webglFramebuffer[b.activeCubeFace]:b.__webglFramebuffer,i=b.width,j=b.height,k=0,l=0):(h=null,i=kc,j=lc,k=ic,l=jc),h!==Tb&&(Jb.bindFramebuffer(Jb.FRAMEBUFFER,h),Jb.viewport(k,l,i,j),Tb=h),mc=i,nc=j},this.shadowMapPlugin=new a.ShadowMapPlugin,this.addPrePlugin(this.shadowMapPlugin),this.addPostPlugin(new a.SpritePlugin),this.addPostPlugin(new a.LensFlarePlugin)},a.WebGLRenderTarget=function(b,c,d){this.width=b,this.height=c,d=d||{},this.wrapS=void 0!==d.wrapS?d.wrapS:a.ClampToEdgeWrapping,this.wrapT=void 0!==d.wrapT?d.wrapT:a.ClampToEdgeWrapping,this.magFilter=void 0!==d.magFilter?d.magFilter:a.LinearFilter,this.minFilter=void 0!==d.minFilter?d.minFilter:a.LinearMipMapLinearFilter,this.anisotropy=void 0!==d.anisotropy?d.anisotropy:1,this.offset=new a.Vector2(0,0),this.repeat=new a.Vector2(1,1),this.format=void 0!==d.format?d.format:a.RGBAFormat,this.type=void 0!==d.type?d.type:a.UnsignedByteType,this.depthBuffer=void 0!==d.depthBuffer?d.depthBuffer:!0,this.stencilBuffer=void 0!==d.stencilBuffer?d.stencilBuffer:!0,this.generateMipmaps=!0,this.shareDepthFrom=null +},a.WebGLRenderTarget.prototype={constructor:a.WebGLRenderTarget,clone:function(){var b=new a.WebGLRenderTarget(this.width,this.height);return b.wrapS=this.wrapS,b.wrapT=this.wrapT,b.magFilter=this.magFilter,b.minFilter=this.minFilter,b.anisotropy=this.anisotropy,b.offset.copy(this.offset),b.repeat.copy(this.repeat),b.format=this.format,b.type=this.type,b.depthBuffer=this.depthBuffer,b.stencilBuffer=this.stencilBuffer,b.generateMipmaps=this.generateMipmaps,b.shareDepthFrom=this.shareDepthFrom,b},dispose:function(){this.dispatchEvent({type:"dispose"})}},a.EventDispatcher.prototype.apply(a.WebGLRenderTarget.prototype),a.WebGLRenderTargetCube=function(b,c,d){a.WebGLRenderTarget.call(this,b,c,d),this.activeCubeFace=0},a.WebGLRenderTargetCube.prototype=Object.create(a.WebGLRenderTarget.prototype),a.RenderableVertex=function(){this.position=new a.Vector3,this.positionWorld=new a.Vector3,this.positionScreen=new a.Vector4,this.visible=!0},a.RenderableVertex.prototype.copy=function(a){this.positionWorld.copy(a.positionWorld),this.positionScreen.copy(a.positionScreen)},a.RenderableFace=function(){this.id=0,this.v1=new a.RenderableVertex,this.v2=new a.RenderableVertex,this.v3=new a.RenderableVertex,this.centroidModel=new a.Vector3,this.normalModel=new a.Vector3,this.vertexNormalsModel=[new a.Vector3,new a.Vector3,new a.Vector3],this.vertexNormalsLength=0,this.color=null,this.material=null,this.uvs=[[]],this.z=0},a.RenderableObject=function(){this.id=0,this.object=null,this.z=0},a.RenderableSprite=function(){this.id=0,this.object=null,this.x=0,this.y=0,this.z=0,this.rotation=0,this.scale=new a.Vector2,this.material=null},a.RenderableLine=function(){this.id=0,this.v1=new a.RenderableVertex,this.v2=new a.RenderableVertex,this.vertexColors=[new a.Color,new a.Color],this.material=null,this.z=0},a.GeometryUtils={merge:function(b,c,d){var e,f,g=b.vertices.length,h=(b.faceVertexUvs[0].length,c instanceof a.Mesh?c.geometry:c),i=b.vertices,j=h.vertices,k=b.faces,l=h.faces,m=b.faceVertexUvs[0],n=h.faceVertexUvs[0];void 0===d&&(d=0),c instanceof a.Mesh&&(c.matrixAutoUpdate&&c.updateMatrix(),e=c.matrix,f=(new a.Matrix3).getNormalMatrix(e));for(var o=0,p=j.length;p>o;o++){var q=j[o],r=q.clone();e&&r.applyMatrix4(e),i.push(r)}for(o=0,p=l.length;p>o;o++){var s,t,u,v=l[o],w=v.vertexNormals,x=v.vertexColors;s=new a.Face3(v.a+g,v.b+g,v.c+g),s.normal.copy(v.normal),f&&s.normal.applyMatrix3(f).normalize();for(var y=0,z=w.length;z>y;y++)t=w[y].clone(),f&&t.applyMatrix3(f).normalize(),s.vertexNormals.push(t);s.color.copy(v.color);for(var y=0,z=x.length;z>y;y++)u=x[y],s.vertexColors.push(u.clone());s.materialIndex=v.materialIndex+d,s.centroid.copy(v.centroid),e&&s.centroid.applyMatrix4(e),k.push(s)}for(o=0,p=n.length;p>o;o++){for(var A=n[o],B=[],y=0,z=A.length;z>y;y++)B.push(new a.Vector2(A[y].x,A[y].y));m.push(B)}},randomPointInTriangle:function(){var b=new a.Vector3;return function(c,d,e){var f=new a.Vector3,g=a.Math.random16(),h=a.Math.random16();g+h>1&&(g=1-g,h=1-h);var i=1-g-h;return f.copy(c),f.multiplyScalar(g),b.copy(d),b.multiplyScalar(h),f.add(b),b.copy(e),b.multiplyScalar(i),f.add(b),f}}(),randomPointInFace:function(b,c){var d,e,f;return d=c.vertices[b.a],e=c.vertices[b.b],f=c.vertices[b.c],a.GeometryUtils.randomPointInTriangle(d,e,f)},randomPointsInGeometry:function(b,c){function d(a){function b(c,d){if(c>d)return c;var e=c+Math.floor((d-c)/2);return n[e]>a?b(c,e-1):n[e]f;f++)e=j[f],g=k[e.a],h=k[e.b],i=k[e.c],e._area=a.GeometryUtils.triangleArea(g,h,i),m+=e._area,n[f]=m;var o,p,q=[],r={};for(f=0;c>f;f++)o=a.Math.random16()*m,p=d(o),q[f]=a.GeometryUtils.randomPointInFace(j[p],b,!0),r[p]?r[p]+=1:r[p]=1;return q},triangleArea:function(){var b=new a.Vector3,c=new a.Vector3;return function(a,d,e){return b.subVectors(d,a),c.subVectors(e,a),b.cross(c),.5*b.length()}}(),center:function(b){b.computeBoundingBox();var c=b.boundingBox,d=new a.Vector3;return d.addVectors(c.min,c.max),d.multiplyScalar(-.5),b.applyMatrix((new a.Matrix4).makeTranslation(d.x,d.y,d.z)),b.computeBoundingBox(),d},triangulateQuads:function(a){var b,c,d,e,f=[],g=[];for(b=0,c=a.faceVertexUvs.length;c>b;b++)g[b]=[];for(b=0,c=a.faces.length;c>b;b++){var h=a.faces[b];for(f.push(h),d=0,e=a.faceVertexUvs.length;e>d;d++)g[d].push(a.faceVertexUvs[d][b])}a.faces=f,a.faceVertexUvs=g,a.computeCentroids(),a.computeFaceNormals(),a.computeVertexNormals(),a.hasTangents&&a.computeTangents()}},a.ImageUtils={crossOrigin:void 0,loadTexture:function(b,c,d){var e=new a.ImageLoader;e.crossOrigin=this.crossOrigin;var f=new a.Texture(void 0,c),g=e.load(b,function(){f.needsUpdate=!0,d&&d(f)});return f.image=g,f.sourceFile=b,f},loadCompressedTexture:function(b,c,d,e){var f=new a.CompressedTexture;f.mapping=c;var g=new XMLHttpRequest;return g.onload=function(){var b=g.response,c=a.ImageUtils.parseDDS(b,!0);f.format=c.format,f.mipmaps=c.mipmaps,f.image.width=c.width,f.image.height=c.height,f.generateMipmaps=!1,f.needsUpdate=!0,d&&d(f)},g.onerror=e,g.open("GET",b,!0),g.responseType="arraybuffer",g.send(null),f},loadTextureCube:function(b,c,d,e){var f=[];f.loadCount=0;var g=new a.Texture;g.image=f,void 0!==c&&(g.mapping=c),g.flipY=!1;for(var h=0,i=b.length;i>h;++h){var j=new Image;f[h]=j,j.onload=function(){f.loadCount+=1,6===f.loadCount&&(g.needsUpdate=!0,d&&d(g))},j.onerror=e,j.crossOrigin=this.crossOrigin,j.src=b[h]}return g},loadCompressedTextureCube:function(b,c,d,e){var f=[];f.loadCount=0;var g=new a.CompressedTexture;g.image=f,void 0!==c&&(g.mapping=c),g.flipY=!1,g.generateMipmaps=!1;var h=function(b,c){return function(){var e=b.response,h=a.ImageUtils.parseDDS(e,!0);c.format=h.format,c.mipmaps=h.mipmaps,c.width=h.width,c.height=h.height,f.loadCount+=1,6===f.loadCount&&(g.format=h.format,g.needsUpdate=!0,d&&d(g))}};if(b instanceof Array)for(var i=0,j=b.length;j>i;++i){var k={};f[i]=k;var l=new XMLHttpRequest;l.onload=h(l,k),l.onerror=e;var m=b[i];l.open("GET",m,!0),l.responseType="arraybuffer",l.send(null)}else{var m=b,l=new XMLHttpRequest;l.onload=function(){var b=l.response,c=a.ImageUtils.parseDDS(b,!0);if(c.isCubemap){for(var e=c.mipmaps.length/c.mipmapCount,h=0;e>h;h++){f[h]={mipmaps:[]};for(var i=0;ii;i++){f[i]={mipmaps:[]};for(var j=0;j>8&255,a>>16&255,a>>24&255)}function f(a,b,c,d){for(var e=c*d*4,f=new Uint8Array(a,b,e),g=new Uint8Array(e),h=0,i=0,j=0;d>j;j++)for(var k=0;c>k;k++){var l=f[i];i++;var m=f[i];i++;var n=f[i];i++;var o=f[i];i++,g[h]=n,h++,g[h]=m,h++,g[h]=l,h++,g[h]=o,h++}return g}var g={mipmaps:[],width:0,height:0,format:null,mipmapCount:1},h=542327876,i=131072,j=512,k=4,l=d("DXT1"),m=d("DXT3"),n=d("DXT5"),o=31,p=0,q=1,r=2,s=3,t=4,u=7,v=20,w=21,x=22,y=23,z=24,A=25,B=26,C=28,D=new Int32Array(b,0,o);if(D[p]!==h)return console.error("ImageUtils.parseDDS(): Invalid magic number in DDS header"),g;if(!D[v]&k)return console.error("ImageUtils.parseDDS(): Unsupported format, must contain a FourCC code"),g;var E,F=D[w],G=!1;switch(F){case l:E=8,g.format=a.RGB_S3TC_DXT1_Format;break;case m:E=16,g.format=a.RGBA_S3TC_DXT3_Format;break;case n:E=16,g.format=a.RGBA_S3TC_DXT5_Format;break;default:if(!(32==D[x]&&16711680&D[y]&&65280&D[z]&&255&D[A]&&4278190080&D[B]))return console.error("ImageUtils.parseDDS(): Unsupported FourCC code: ",e(F)),g;G=!0,E=64,g.format=a.RGBAFormat}g.mipmapCount=1,D[r]&i&&c!==!1&&(g.mipmapCount=Math.max(1,D[u])),g.isCubemap=D[C]&j?!0:!1,g.width=D[t],g.height=D[s];for(var H=D[q]+4,I=g.width,J=g.height,K=g.isCubemap?6:1,L=0;K>L;L++){for(var M=0;Mm;m++)for(var n=0;g>n;n++){var o=0>n-1?0:n-1,p=n+1>g-1?g-1:n+1,q=0>m-1?0:m-1,r=m+1>f-1?f-1:m+1,s=[],t=[0,0,j[4*(n*f+m)]/255*b];s.push([-1,0,j[4*(n*f+q)]/255*b]),s.push([-1,-1,j[4*(o*f+q)]/255*b]),s.push([0,-1,j[4*(o*f+m)]/255*b]),s.push([1,-1,j[4*(o*f+r)]/255*b]),s.push([1,0,j[4*(n*f+r)]/255*b]),s.push([1,1,j[4*(p*f+r)]/255*b]),s.push([0,1,j[4*(p*f+m)]/255*b]),s.push([-1,1,j[4*(p*f+q)]/255*b]);for(var u=[],v=s.length,w=0;v>w;w++){var x=s[w],y=s[(w+1)%v];x=d(x,t),y=d(y,t),u.push(e(c(x,y)))}for(var z=[0,0,0],w=0;wj;j++)f[3*j]=g,f[3*j+1]=h,f[3*j+2]=i;var k=new a.DataTexture(f,b,c,a.RGBFormat);return k.needsUpdate=!0,k}},a.SceneUtils={createMultiMaterialObject:function(b,c){for(var d=new a.Object3D,e=0,f=c.length;f>e;e++)d.add(new a.Mesh(b,c[e]));return d},detach:function(a,b,c){a.applyMatrix(b.matrixWorld),b.remove(a),c.add(a)},attach:function(b,c,d){var e=new a.Matrix4;e.getInverse(d.matrixWorld),b.applyMatrix(e),c.remove(b),d.add(b)}},a.FontUtils={faces:{},face:"helvetiker",weight:"normal",style:"normal",size:150,divisions:10,getFace:function(){return this.faces[this.face][this.weight][this.style]},loadFace:function(a){var b=a.familyName.toLowerCase(),c=this;c.faces[b]=c.faces[b]||{},c.faces[b][a.cssFontWeight]=c.faces[b][a.cssFontWeight]||{},c.faces[b][a.cssFontWeight][a.cssFontStyle]=a;c.faces[b][a.cssFontWeight][a.cssFontStyle]=a;return a},drawText:function(b){var c,d=this.getFace(),e=this.size/d.resolution,f=0,g=String(b).split(""),h=g.length,i=[];for(c=0;h>c;c++){var j=new a.Path,k=this.extractGlyphPoints(g[c],d,e,f,j);f+=k.offset,i.push(k.path)}var l=f/2;return{paths:i,offset:l}},extractGlyphPoints:function(b,c,d,e,f){var g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z=[],A=c.glyphs[b]||c.glyphs["?"];if(A){if(A.o)for(j=A._cachedOutline||(A._cachedOutline=A.o.split(" ")),l=j.length,m=d,n=d,g=0;l>g;)switch(k=j[g++]){case"m":o=j[g++]*m+e,p=j[g++]*n,f.moveTo(o,p);break;case"l":o=j[g++]*m+e,p=j[g++]*n,f.lineTo(o,p);break;case"q":if(q=j[g++]*m+e,r=j[g++]*n,u=j[g++]*m+e,v=j[g++]*n,f.quadraticCurveTo(u,v,q,r),y=z[z.length-1])for(s=y.x,t=y.y,h=1,i=this.divisions;i>=h;h++){var B=h/i;a.Shape.Utils.b2(B,s,u,q),a.Shape.Utils.b2(B,t,v,r)}break;case"b":if(q=j[g++]*m+e,r=j[g++]*n,u=j[g++]*m+e,v=j[g++]*-n,w=j[g++]*m+e,x=j[g++]*-n,f.bezierCurveTo(q,r,u,v,w,x),y=z[z.length-1])for(s=y.x,t=y.y,h=1,i=this.divisions;i>=h;h++){var B=h/i;a.Shape.Utils.b3(B,s,u,w,q),a.Shape.Utils.b3(B,t,v,x,r)}}return{offset:A.ha*d,path:f}}}},a.FontUtils.generateShapes=function(b,c){c=c||{};var d=void 0!==c.size?c.size:100,e=void 0!==c.curveSegments?c.curveSegments:4,f=void 0!==c.font?c.font:"helvetiker",g=void 0!==c.weight?c.weight:"normal",h=void 0!==c.style?c.style:"normal";a.FontUtils.size=d,a.FontUtils.divisions=e,a.FontUtils.face=f,a.FontUtils.weight=g,a.FontUtils.style=h;for(var i=a.FontUtils.drawText(b),j=i.paths,k=[],l=0,m=j.length;m>l;l++)Array.prototype.push.apply(k,j[l].toShapes());return k},function(a){var b=1e-10,c=function(a,b){var c=a.length;if(3>c)return null;var f,g,h,i=[],j=[],k=[];if(d(a)>0)for(g=0;c>g;g++)j[g]=g;else for(g=0;c>g;g++)j[g]=c-1-g;var l=c,m=2*l;for(g=l-1;l>2;){if(m--<=0)return console.log("Warning, unable to triangulate polygon!"),b?k:i;if(f=g,f>=l&&(f=0),g=f+1,g>=l&&(g=0),h=g+1,h>=l&&(h=0),e(a,f,g,h,l,j)){var n,o,p,q,r;for(n=j[f],o=j[g],p=j[h],i.push([a[n],a[o],a[p]]),k.push([j[f],j[g],j[h]]),q=g,r=g+1;l>r;q++,r++)j[q]=j[r];l--,m=2*l}}return b?k:i},d=function(a){for(var b=a.length,c=0,d=b-1,e=0;b>e;d=e++)c+=a[d].x*a[e].y-a[e].x*a[d].y;return.5*c},e=function(a,c,d,e,f,g){var h,i,j,k,l,m,n,o,p;if(i=a[g[c]].x,j=a[g[c]].y,k=a[g[d]].x,l=a[g[d]].y,m=a[g[e]].x,n=a[g[e]].y,b>(k-i)*(n-j)-(l-j)*(m-i))return!1;var q,r,s,t,u,v,w,x,y,z,A,B,C,D,E;for(q=m-k,r=n-l,s=i-m,t=j-n,u=k-i,v=l-j,h=0;f>h;h++)if(o=a[g[h]].x,p=a[g[h]].y,!(o===i&&p===j||o===k&&p===l||o===m&&p===n)&&(w=o-i,x=p-j,y=o-k,z=p-l,A=o-m,B=p-n,E=q*z-r*y,C=u*x-v*w,D=s*B-t*A,E>=-b&&D>=-b&&C>=-b))return!1;return!0};return a.Triangulate=c,a.Triangulate.area=d,a}(a.FontUtils),self._typeface_js={faces:a.FontUtils.faces,loadFace:a.FontUtils.loadFace},a.typeface_js=self._typeface_js,a.Curve=function(){},a.Curve.prototype.getPoint=function(){return console.log("Warning, getPoint() not implemented!"),null},a.Curve.prototype.getPointAt=function(a){var b=this.getUtoTmapping(a);return this.getPoint(b)},a.Curve.prototype.getPoints=function(a){a||(a=5);var b,c=[];for(b=0;a>=b;b++)c.push(this.getPoint(b/a));return c},a.Curve.prototype.getSpacedPoints=function(a){a||(a=5);var b,c=[];for(b=0;a>=b;b++)c.push(this.getPointAt(b/a));return c},a.Curve.prototype.getLength=function(){var a=this.getLengths();return a[a.length-1]},a.Curve.prototype.getLengths=function(a){if(a||(a=this.__arcLengthDivisions?this.__arcLengthDivisions:200),this.cacheArcLengths&&this.cacheArcLengths.length==a+1&&!this.needsUpdate)return this.cacheArcLengths;this.needsUpdate=!1;var b,c,d=[],e=this.getPoint(0),f=0;for(d.push(0),c=1;a>=c;c++)b=this.getPoint(c/a),f+=b.distanceTo(e),d.push(f),e=b;return this.cacheArcLengths=d,d},a.Curve.prototype.updateArcLengths=function(){this.needsUpdate=!0,this.getLengths()},a.Curve.prototype.getUtoTmapping=function(a,b){var c,d=this.getLengths(),e=0,f=d.length;c=b?b:a*d[f-1];for(var g,h=0,i=f-1;i>=h;)if(e=Math.floor(h+(i-h)/2),g=d[e]-c,0>g)h=e+1;else{if(!(g>0)){i=e;break}i=e-1}if(e=i,d[e]==c){var j=e/(f-1);return j}var k=d[e],l=d[e+1],m=l-k,n=(c-k)/m,j=(e+n)/(f-1);return j},a.Curve.prototype.getTangent=function(a){var b=1e-4,c=a-b,d=a+b;0>c&&(c=0),d>1&&(d=1);var e=this.getPoint(c),f=this.getPoint(d),g=f.clone().sub(e);return g.normalize()},a.Curve.prototype.getTangentAt=function(a){var b=this.getUtoTmapping(a);return this.getTangent(b)},a.Curve.Utils={tangentQuadraticBezier:function(a,b,c,d){return 2*(1-a)*(c-b)+2*a*(d-c)},tangentCubicBezier:function(a,b,c,d,e){return-3*b*(1-a)*(1-a)+3*c*(1-a)*(1-a)-6*a*c*(1-a)+6*a*d*(1-a)-3*a*a*d+3*a*a*e},tangentSpline:function(a){var b=6*a*a-6*a,c=3*a*a-4*a+1,d=-6*a*a+6*a,e=3*a*a-2*a;return b+c+d+e},interpolate:function(a,b,c,d,e){var f=.5*(c-a),g=.5*(d-b),h=e*e,i=e*h;return(2*b-2*c+f+g)*i+(-3*b+3*c-2*f-g)*h+f*e+b}},a.Curve.create=function(b,c){return b.prototype=Object.create(a.Curve.prototype),b.prototype.getPoint=c,b},a.CurvePath=function(){this.curves=[],this.bends=[],this.autoClose=!1},a.CurvePath.prototype=Object.create(a.Curve.prototype),a.CurvePath.prototype.add=function(a){this.curves.push(a)},a.CurvePath.prototype.checkConnection=function(){},a.CurvePath.prototype.closePath=function(){var b=this.curves[0].getPoint(0),c=this.curves[this.curves.length-1].getPoint(1);b.equals(c)||this.curves.push(new a.LineCurve(c,b))},a.CurvePath.prototype.getPoint=function(a){for(var b,c,d=a*this.getLength(),e=this.getCurveLengths(),f=0;f=d){b=e[f]-d,c=this.curves[f];var g=1-b/c.getLength();return c.getPointAt(g)}f++}return null},a.CurvePath.prototype.getLength=function(){var a=this.getCurveLengths();return a[a.length-1]},a.CurvePath.prototype.getCurveLengths=function(){if(this.cacheLengths&&this.cacheLengths.length==this.curves.length)return this.cacheLengths;var a,b=[],c=0,d=this.curves.length;for(a=0;d>a;a++)c+=this.curves[a].getLength(),b.push(c);return this.cacheLengths=b,b},a.CurvePath.prototype.getBoundingBox=function(){var b,c,d,e,f,g,h=this.getPoints();b=c=Number.NEGATIVE_INFINITY,e=f=Number.POSITIVE_INFINITY;var i,j,k,l,m=h[0]instanceof a.Vector3;for(l=m?new a.Vector3:new a.Vector2,j=0,k=h.length;k>j;j++)i=h[j],i.x>b?b=i.x:i.xc?c=i.y:i.yd?d=i.z:i.zc;c++)e=this.getWrapPoints(e,b[c]);return e},a.CurvePath.prototype.getTransformedSpacedPoints=function(a,b){var c,d,e=this.getSpacedPoints(a);for(b||(b=this.bends),c=0,d=b.length;d>c;c++)e=this.getWrapPoints(e,b[c]);return e},a.CurvePath.prototype.getWrapPoints=function(a,b){var c,d,e,f,g,h,i=this.getBoundingBox();for(c=0,d=a.length;d>c;c++){e=a[c],f=e.x,g=e.y,h=f/i.maxX,h=b.getUtoTmapping(h,f);var j=b.getPoint(h),k=b.getTangent(h);k.set(-k.y,k.x).multiplyScalar(g),e.x=j.x+k.x,e.y=j.y+k.y}return a},a.Gyroscope=function(){a.Object3D.call(this)},a.Gyroscope.prototype=Object.create(a.Object3D.prototype),a.Gyroscope.prototype.updateMatrixWorld=function(a){this.matrixAutoUpdate&&this.updateMatrix(),(this.matrixWorldNeedsUpdate||a)&&(this.parent?(this.matrixWorld.multiplyMatrices(this.parent.matrixWorld,this.matrix),this.matrixWorld.decompose(this.translationWorld,this.quaternionWorld,this.scaleWorld),this.matrix.decompose(this.translationObject,this.quaternionObject,this.scaleObject),this.matrixWorld.compose(this.translationWorld,this.quaternionObject,this.scaleWorld)):this.matrixWorld.copy(this.matrix),this.matrixWorldNeedsUpdate=!1,a=!0);for(var b=0,c=this.children.length;c>b;b++)this.children[b].updateMatrixWorld(a)},a.Gyroscope.prototype.translationWorld=new a.Vector3,a.Gyroscope.prototype.translationObject=new a.Vector3,a.Gyroscope.prototype.quaternionWorld=new a.Quaternion,a.Gyroscope.prototype.quaternionObject=new a.Quaternion,a.Gyroscope.prototype.scaleWorld=new a.Vector3,a.Gyroscope.prototype.scaleObject=new a.Vector3,a.Path=function(b){a.CurvePath.call(this),this.actions=[],b&&this.fromPoints(b)},a.Path.prototype=Object.create(a.CurvePath.prototype),a.PathActions={MOVE_TO:"moveTo",LINE_TO:"lineTo",QUADRATIC_CURVE_TO:"quadraticCurveTo",BEZIER_CURVE_TO:"bezierCurveTo",CSPLINE_THRU:"splineThru",ARC:"arc",ELLIPSE:"ellipse"},a.Path.prototype.fromPoints=function(a){this.moveTo(a[0].x,a[0].y);for(var b=1,c=a.length;c>b;b++)this.lineTo(a[b].x,a[b].y)},a.Path.prototype.moveTo=function(){var b=Array.prototype.slice.call(arguments);this.actions.push({action:a.PathActions.MOVE_TO,args:b})},a.Path.prototype.lineTo=function(b,c){var d=Array.prototype.slice.call(arguments),e=this.actions[this.actions.length-1].args,f=e[e.length-2],g=e[e.length-1],h=new a.LineCurve(new a.Vector2(f,g),new a.Vector2(b,c));this.curves.push(h),this.actions.push({action:a.PathActions.LINE_TO,args:d})},a.Path.prototype.quadraticCurveTo=function(b,c,d,e){var f=Array.prototype.slice.call(arguments),g=this.actions[this.actions.length-1].args,h=g[g.length-2],i=g[g.length-1],j=new a.QuadraticBezierCurve(new a.Vector2(h,i),new a.Vector2(b,c),new a.Vector2(d,e));this.curves.push(j),this.actions.push({action:a.PathActions.QUADRATIC_CURVE_TO,args:f})},a.Path.prototype.bezierCurveTo=function(b,c,d,e,f,g){var h=Array.prototype.slice.call(arguments),i=this.actions[this.actions.length-1].args,j=i[i.length-2],k=i[i.length-1],l=new a.CubicBezierCurve(new a.Vector2(j,k),new a.Vector2(b,c),new a.Vector2(d,e),new a.Vector2(f,g));this.curves.push(l),this.actions.push({action:a.PathActions.BEZIER_CURVE_TO,args:h})},a.Path.prototype.splineThru=function(b){var c=Array.prototype.slice.call(arguments),d=this.actions[this.actions.length-1].args,e=d[d.length-2],f=d[d.length-1],g=[new a.Vector2(e,f)];Array.prototype.push.apply(g,b);var h=new a.SplineCurve(g);this.curves.push(h),this.actions.push({action:a.PathActions.CSPLINE_THRU,args:c})},a.Path.prototype.arc=function(a,b,c,d,e,f){var g=this.actions[this.actions.length-1].args,h=g[g.length-2],i=g[g.length-1];this.absarc(a+h,b+i,c,d,e,f)},a.Path.prototype.absarc=function(a,b,c,d,e,f){this.absellipse(a,b,c,c,d,e,f)},a.Path.prototype.ellipse=function(a,b,c,d,e,f,g){var h=this.actions[this.actions.length-1].args,i=h[h.length-2],j=h[h.length-1];this.absellipse(a+i,b+j,c,d,e,f,g)},a.Path.prototype.absellipse=function(b,c,d,e,f,g,h){var i=Array.prototype.slice.call(arguments),j=new a.EllipseCurve(b,c,d,e,f,g,h);this.curves.push(j);var k=j.getPoint(1);i.push(k.x),i.push(k.y),this.actions.push({action:a.PathActions.ELLIPSE,args:i})},a.Path.prototype.getSpacedPoints=function(a){a||(a=40);for(var b=[],c=0;a>c;c++)b.push(this.getPoint(c/a));return b},a.Path.prototype.getPoints=function(b,c){if(this.useSpacedPoints)return console.log("tata"),this.getSpacedPoints(b,c);b=b||12;var d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v=[];for(d=0,e=this.actions.length;e>d;d++)switch(f=this.actions[d],g=f.action,h=f.args,g){case a.PathActions.MOVE_TO:v.push(new a.Vector2(h[0],h[1]));break;case a.PathActions.LINE_TO:v.push(new a.Vector2(h[0],h[1]));break;case a.PathActions.QUADRATIC_CURVE_TO:for(i=h[2],j=h[3],m=h[0],n=h[1],v.length>0?(q=v[v.length-1],o=q.x,p=q.y):(q=this.actions[d-1].args,o=q[q.length-2],p=q[q.length-1]),r=1;b>=r;r++)s=r/b,t=a.Shape.Utils.b2(s,o,m,i),u=a.Shape.Utils.b2(s,p,n,j),v.push(new a.Vector2(t,u));break;case a.PathActions.BEZIER_CURVE_TO:for(i=h[4],j=h[5],m=h[0],n=h[1],k=h[2],l=h[3],v.length>0?(q=v[v.length-1],o=q.x,p=q.y):(q=this.actions[d-1].args,o=q[q.length-2],p=q[q.length-1]),r=1;b>=r;r++)s=r/b,t=a.Shape.Utils.b3(s,o,m,k,i),u=a.Shape.Utils.b3(s,p,n,l,j),v.push(new a.Vector2(t,u));break;case a.PathActions.CSPLINE_THRU:q=this.actions[d-1].args;var w=new a.Vector2(q[q.length-2],q[q.length-1]),x=[w],y=b*h[0].length;x=x.concat(h[0]);var z=new a.SplineCurve(x);for(r=1;y>=r;r++)v.push(z.getPointAt(r/y));break;case a.PathActions.ARC:var A,B=h[0],C=h[1],D=h[2],E=h[3],F=h[4],G=!!h[5],H=F-E,I=2*b;for(r=1;I>=r;r++)s=r/I,G||(s=1-s),A=E+s*H,t=B+D*Math.cos(A),u=C+D*Math.sin(A),v.push(new a.Vector2(t,u));break;case a.PathActions.ELLIPSE:var A,B=h[0],C=h[1],J=h[2],K=h[3],E=h[4],F=h[5],G=!!h[6],H=F-E,I=2*b;for(r=1;I>=r;r++)s=r/I,G||(s=1-s),A=E+s*H,t=B+J*Math.cos(A),u=C+K*Math.sin(A),v.push(new a.Vector2(t,u))}var L=v[v.length-1],M=1e-10;return Math.abs(L.x-v[0].x)g;f=g++){var h=b[f],i=b[g],j=i.x-h.x,k=i.y-h.y;if(Math.abs(k)>c){if(0>k&&(h=b[g],j=-j,i=b[f],k=-k),a.yi.y)continue;if(a.y==h.y){if(a.x==h.x)return!0}else{var l=k*(a.x-h.x)-j*(a.y-h.y);if(0==l)return!0;if(0>l)continue;e=!e}}else{if(a.y!=h.y)continue;if(i.x<=a.x&&a.x<=h.x||h.x<=a.x&&a.x<=i.x)return!0}}return e}var d,e,f,g,h,i=[],j=new a.Path;for(d=0,e=this.actions.length;e>d;d++)f=this.actions[d],h=f.args,g=f.action,g==a.PathActions.MOVE_TO&&0!=j.actions.length&&(i.push(j),j=new a.Path),j[g].apply(j,h);if(0!=j.actions.length&&i.push(j),0==i.length)return[];var k,l,m,n=[];if(1==i.length)return l=i[0],m=new a.Shape,m.actions=l.actions,m.curves=l.curves,n.push(m),n;var o=!a.Shape.Utils.isClockWise(i[0].getPoints());o=b?!o:o;var p,q=[],r=[],s=[],t=0;for(r[t]=void 0,s[t]=[],d=0,e=i.length;e>d;d++)l=i[d],p=l.getPoints(),k=a.Shape.Utils.isClockWise(p),k=b?!k:k,k?(!o&&r[t]&&t++,r[t]={s:new a.Shape,p:p},r[t].s.actions=l.actions,r[t].s.curves=l.curves,o&&t++,s[t]=[]):s[t].push({h:l,p:p[0]});if(r.length>1){for(var u=!1,v=[],w=0,x=r.length;x>w;w++)q[w]=[];for(var w=0,x=r.length;x>w;w++)for(var y=(r[w],s[w]),z=0;z0&&(u||(s=q))}var D,E,F;for(d=0,e=r.length;e>d;d++)for(m=r[d].s,n.push(m),D=s[d],E=0,F=D.length;F>E;E++)m.holes.push(D[E].h);return n},a.Shape=function(){a.Path.apply(this,arguments),this.holes=[]},a.Shape.prototype=Object.create(a.Path.prototype),a.Shape.prototype.extrude=function(b){var c=new a.ExtrudeGeometry(this,b);return c},a.Shape.prototype.makeGeometry=function(b){var c=new a.ShapeGeometry(this,b);return c},a.Shape.prototype.getPointsHoles=function(a){var b,c=this.holes.length,d=[];for(b=0;c>b;b++)d[b]=this.holes[b].getTransformedPoints(a,this.bends);return d},a.Shape.prototype.getSpacedPointsHoles=function(a){var b,c=this.holes.length,d=[];for(b=0;c>b;b++)d[b]=this.holes[b].getTransformedSpacedPoints(a,this.bends);return d},a.Shape.prototype.extractAllPoints=function(a){return{shape:this.getTransformedPoints(a),holes:this.getPointsHoles(a)}},a.Shape.prototype.extractPoints=function(a){return this.useSpacedPoints?this.extractAllSpacedPoints(a):this.extractAllPoints(a)},a.Shape.prototype.extractAllSpacedPoints=function(a){return{shape:this.getTransformedSpacedPoints(a),holes:this.getSpacedPointsHoles(a)}},a.Shape.Utils={triangulateShape:function(b,c){function d(a,b,c){return a.x!=b.x?a.xg){var p;if(n>0){if(0>o||o>n)return[];if(p=k*l-j*m,0>p||p>n)return[]}else{if(o>0||n>o)return[];if(p=k*l-j*m,p>0||n>p)return[]}if(0==p)return!f||0!=o&&o!=n?[a]:[];if(p==n)return!f||0!=o&&o!=n?[b]:[];if(0==o)return[c];if(o==n)return[e];var q=p/n;return[{x:a.x+q*h,y:a.y+q*i}]}if(0!=o||k*l!=j*m)return[];var r=0==h&&0==i,s=0==j&&0==k;if(r&&s)return a.x!=c.x||a.y!=c.y?[]:[a];if(r)return d(c,e,a)?[a]:[];if(s)return d(a,b,c)?[c]:[];var t,u,v,w,x,y,z,A;return 0!=h?(a.x=v?z>w?[]:w==z?f?[]:[x]:A>=w?[x,u]:[x,y]:v>A?[]:v==A?f?[]:[t]:A>=w?[t,u]:[t,y]}function f(a,b,c,d){var e=1e-10,f=b.x-a.x,g=b.y-a.y,h=c.x-a.x,i=c.y-a.y,j=d.x-a.x,k=d.y-a.y,l=f*i-g*h,m=f*k-g*j;if(Math.abs(l)>e){var n=j*i-k*h;return l>0?m>=0&&n>=0:m>=0||n>=0}return m>0}function g(a,b){function c(a,b){var c=s.length-1,d=a-1;0>d&&(d=c);var e=a+1;e>c&&(e=0);var g=f(s[a],s[d],s[e],h[b]);if(!g)return!1;var i=h.length-1,j=b-1;0>j&&(j=i);var k=b+1;return k>i&&(k=0),g=f(h[b],h[j],h[k],s[a]),g?!0:!1}function d(a,b){var c,d,f;for(c=0;c0)return!0;return!1}function g(a,c){var d,f,g,h,i;for(d=0;d0)return!0;return!1}for(var h,i,j,k,l,m,n,o,p,q,r,s=a.concat(),t=[],u=[],v=0,w=b.length;w>v;v++)t.push(v);for(var x=2*t.length;t.length>0;){if(x--,0>x){console.log("Infinite Loop! Holes left:"+t.length+", Probably Hole outside Shape!");break}for(j=0;j=0)break;u[n]=!0}if(i>=0)break}}return s}for(var h,i,j,k,l,m,n={},o=b.concat(),p=0,q=c.length;q>p;p++)Array.prototype.push.apply(o,c[p]);for(h=0,i=o.length;i>h;h++)l=o[h].x+":"+o[h].y,void 0!==n[l]&&console.log("Duplicate point",l),n[l]=h;var r=g(b,c),s=a.FontUtils.Triangulate(r,!1);for(h=0,i=s.length;i>h;h++)for(k=s[h],j=0;3>j;j++)l=k[j].x+":"+k[j].y,m=n[l],void 0!==m&&(k[j]=m);return s.concat()},isClockWise:function(b){return a.FontUtils.Triangulate.area(b)<0},b2p0:function(a,b){var c=1-a;return c*c*b},b2p1:function(a,b){return 2*(1-a)*a*b},b2p2:function(a,b){return a*a*b},b2:function(a,b,c,d){return this.b2p0(a,b)+this.b2p1(a,c)+this.b2p2(a,d)},b3p0:function(a,b){var c=1-a;return c*c*c*b},b3p1:function(a,b){var c=1-a;return 3*c*c*a*b},b3p2:function(a,b){var c=1-a;return 3*c*a*a*b},b3p3:function(a,b){return a*a*a*b},b3:function(a,b,c,d,e){return this.b3p0(a,b)+this.b3p1(a,c)+this.b3p2(a,d)+this.b3p3(a,e)}},a.LineCurve=function(a,b){this.v1=a,this.v2=b},a.LineCurve.prototype=Object.create(a.Curve.prototype),a.LineCurve.prototype.getPoint=function(a){var b=this.v2.clone().sub(this.v1);return b.multiplyScalar(a).add(this.v1),b},a.LineCurve.prototype.getPointAt=function(a){return this.getPoint(a)},a.LineCurve.prototype.getTangent=function(){var a=this.v2.clone().sub(this.v1);return a.normalize()},a.QuadraticBezierCurve=function(a,b,c){this.v0=a,this.v1=b,this.v2=c},a.QuadraticBezierCurve.prototype=Object.create(a.Curve.prototype),a.QuadraticBezierCurve.prototype.getPoint=function(b){var c,d;return c=a.Shape.Utils.b2(b,this.v0.x,this.v1.x,this.v2.x),d=a.Shape.Utils.b2(b,this.v0.y,this.v1.y,this.v2.y),new a.Vector2(c,d)},a.QuadraticBezierCurve.prototype.getTangent=function(b){var c,d;c=a.Curve.Utils.tangentQuadraticBezier(b,this.v0.x,this.v1.x,this.v2.x),d=a.Curve.Utils.tangentQuadraticBezier(b,this.v0.y,this.v1.y,this.v2.y);var e=new a.Vector2(c,d);return e.normalize(),e},a.CubicBezierCurve=function(a,b,c,d){this.v0=a,this.v1=b,this.v2=c,this.v3=d},a.CubicBezierCurve.prototype=Object.create(a.Curve.prototype),a.CubicBezierCurve.prototype.getPoint=function(b){var c,d;return c=a.Shape.Utils.b3(b,this.v0.x,this.v1.x,this.v2.x,this.v3.x),d=a.Shape.Utils.b3(b,this.v0.y,this.v1.y,this.v2.y,this.v3.y),new a.Vector2(c,d)},a.CubicBezierCurve.prototype.getTangent=function(b){var c,d;c=a.Curve.Utils.tangentCubicBezier(b,this.v0.x,this.v1.x,this.v2.x,this.v3.x),d=a.Curve.Utils.tangentCubicBezier(b,this.v0.y,this.v1.y,this.v2.y,this.v3.y);var e=new a.Vector2(c,d);return e.normalize(),e},a.SplineCurve=function(a){this.points=void 0==a?[]:a},a.SplineCurve.prototype=Object.create(a.Curve.prototype),a.SplineCurve.prototype.getPoint=function(b){var c,d,e,f=new a.Vector2,g=[],h=this.points;return c=(h.length-1)*b,d=Math.floor(c),e=c-d,g[0]=0==d?d:d-1,g[1]=d,g[2]=d>h.length-2?h.length-1:d+1,g[3]=d>h.length-3?h.length-1:d+2,f.x=a.Curve.Utils.interpolate(h[g[0]].x,h[g[1]].x,h[g[2]].x,h[g[3]].x,e),f.y=a.Curve.Utils.interpolate(h[g[0]].y,h[g[1]].y,h[g[2]].y,h[g[3]].y,e),f},a.EllipseCurve=function(a,b,c,d,e,f,g){this.aX=a,this.aY=b,this.xRadius=c,this.yRadius=d,this.aStartAngle=e,this.aEndAngle=f,this.aClockwise=g},a.EllipseCurve.prototype=Object.create(a.Curve.prototype),a.EllipseCurve.prototype.getPoint=function(b){var c,d=this.aEndAngle-this.aStartAngle;0>d&&(d+=2*Math.PI),d>2*Math.PI&&(d-=2*Math.PI),c=this.aClockwise===!0?this.aEndAngle+(1-b)*(2*Math.PI-d):this.aStartAngle+b*d; +var e=this.aX+this.xRadius*Math.cos(c),f=this.aY+this.yRadius*Math.sin(c);return new a.Vector2(e,f)},a.ArcCurve=function(b,c,d,e,f,g){a.EllipseCurve.call(this,b,c,d,d,e,f,g)},a.ArcCurve.prototype=Object.create(a.EllipseCurve.prototype),a.LineCurve3=a.Curve.create(function(a,b){this.v1=a,this.v2=b},function(b){var c=new a.Vector3;return c.subVectors(this.v2,this.v1),c.multiplyScalar(b),c.add(this.v1),c}),a.QuadraticBezierCurve3=a.Curve.create(function(a,b,c){this.v0=a,this.v1=b,this.v2=c},function(b){var c,d,e;return c=a.Shape.Utils.b2(b,this.v0.x,this.v1.x,this.v2.x),d=a.Shape.Utils.b2(b,this.v0.y,this.v1.y,this.v2.y),e=a.Shape.Utils.b2(b,this.v0.z,this.v1.z,this.v2.z),new a.Vector3(c,d,e)}),a.CubicBezierCurve3=a.Curve.create(function(a,b,c,d){this.v0=a,this.v1=b,this.v2=c,this.v3=d},function(b){var c,d,e;return c=a.Shape.Utils.b3(b,this.v0.x,this.v1.x,this.v2.x,this.v3.x),d=a.Shape.Utils.b3(b,this.v0.y,this.v1.y,this.v2.y,this.v3.y),e=a.Shape.Utils.b3(b,this.v0.z,this.v1.z,this.v2.z,this.v3.z),new a.Vector3(c,d,e)}),a.SplineCurve3=a.Curve.create(function(a){this.points=void 0==a?[]:a},function(b){var c,d,e,f=new a.Vector3,g=[],h=this.points;c=(h.length-1)*b,d=Math.floor(c),e=c-d,g[0]=0==d?d:d-1,g[1]=d,g[2]=d>h.length-2?h.length-1:d+1,g[3]=d>h.length-3?h.length-1:d+2;var i=h[g[0]],j=h[g[1]],k=h[g[2]],l=h[g[3]];return f.x=a.Curve.Utils.interpolate(i.x,j.x,k.x,l.x,e),f.y=a.Curve.Utils.interpolate(i.y,j.y,k.y,l.y,e),f.z=a.Curve.Utils.interpolate(i.z,j.z,k.z,l.z,e),f}),a.ClosedSplineCurve3=a.Curve.create(function(a){this.points=void 0==a?[]:a},function(b){var c,d,e,f=new a.Vector3,g=[],h=this.points;return c=(h.length-0)*b,d=Math.floor(c),e=c-d,d+=d>0?0:(Math.floor(Math.abs(d)/h.length)+1)*h.length,g[0]=(d-1)%h.length,g[1]=d%h.length,g[2]=(d+1)%h.length,g[3]=(d+2)%h.length,f.x=a.Curve.Utils.interpolate(h[g[0]].x,h[g[1]].x,h[g[2]].x,h[g[3]].x,e),f.y=a.Curve.Utils.interpolate(h[g[0]].y,h[g[1]].y,h[g[2]].y,h[g[3]].y,e),f.z=a.Curve.Utils.interpolate(h[g[0]].z,h[g[1]].z,h[g[2]].z,h[g[3]].z,e),f}),a.AnimationHandler=function(){var b=[],c={},d={};d.update=function(a){for(var c=0;cb;b++){var d=this.hierarchy[b];d.matrixAutoUpdate=!0,void 0===d.animationCache&&(d.animationCache={},d.animationCache.prevKey={pos:0,rot:0,scl:0},d.animationCache.nextKey={pos:0,rot:0,scl:0},d.animationCache.originalMatrix=d instanceof a.Bone?d.skinMatrix:d.matrix);var e=d.animationCache.prevKey,f=d.animationCache.nextKey;e.pos=this.data.hierarchy[b].keys[0],e.rot=this.data.hierarchy[b].keys[0],e.scl=this.data.hierarchy[b].keys[0],f.pos=this.getNextKeyWith("pos",b,1),f.rot=this.getNextKeyWith("rot",b,1),f.scl=this.getNextKeyWith("scl",b,1)}},a.Animation.prototype.update=function(){var b=[],c=new a.Vector3,d=function(a,b){var c,d,f,g,h,i,j,k,l,m=[],n=[];return c=(a.length-1)*b,d=Math.floor(c),f=c-d,m[0]=0===d?d:d-1,m[1]=d,m[2]=d>a.length-2?d:d+1,m[3]=d>a.length-3?d:d+2,i=a[m[0]],j=a[m[1]],k=a[m[2]],l=a[m[3]],g=f*f,h=f*g,n[0]=e(i[0],j[0],k[0],l[0],f,g,h),n[1]=e(i[1],j[1],k[1],l[1],f,g,h),n[2]=e(i[2],j[2],k[2],l[2],f,g,h),n},e=function(a,b,c,d,e,f,g){var h=.5*(c-a),i=.5*(d-b);return(2*(b-c)+h+i)*g+(-3*(b-c)-2*h-i)*f+h*e+b};return function(e){if(this.isPlaying!==!1){this.currentTime+=e*this.timeScale;var f,g=["pos","rot","scl"],h=this.data.length;if(this.loop===!0&&this.currentTime>h)this.currentTime%=h,this.reset();else if(this.loop===!1&&this.currentTime>h)return void this.stop();this.currentTime=Math.min(this.currentTime,h);for(var i=0,j=this.hierarchy.length;j>i;i++)for(var k=this.hierarchy[i],l=k.animationCache,m=0;3>m;m++){var n=g[m],o=l.prevKey[n],p=l.nextKey[n];if(p.time<=this.currentTime){for(o=this.data.hierarchy[i].keys[0],p=this.getNextKeyWith(n,i,1);p.timeo.index;)o=p,p=this.getNextKeyWith(n,i,p.index+1);l.prevKey[n]=o,l.nextKey[n]=p}k.matrixAutoUpdate=!0,k.matrixWorldNeedsUpdate=!0;var q=(this.currentTime-o.time)/(p.time-o.time),r=o[n],s=p[n];if(0>q&&(q=0),q>1&&(q=1),"pos"===n){if(f=k.position,this.interpolationType===a.AnimationHandler.LINEAR)f.x=r[0]+(s[0]-r[0])*q,f.y=r[1]+(s[1]-r[1])*q,f.z=r[2]+(s[2]-r[2])*q;else if(this.interpolationType===a.AnimationHandler.CATMULLROM||this.interpolationType===a.AnimationHandler.CATMULLROM_FORWARD){b[0]=this.getPrevKeyWith("pos",i,o.index-1).pos,b[1]=r,b[2]=s,b[3]=this.getNextKeyWith("pos",i,p.index+1).pos,q=.33*q+.33;var t=d(b,q);if(f.x=t[0],f.y=t[1],f.z=t[2],this.interpolationType===a.AnimationHandler.CATMULLROM_FORWARD){var u=d(b,1.01*q);c.set(u[0],u[1],u[2]),c.sub(f),c.y=0,c.normalize();var v=Math.atan2(c.x,c.z);k.rotation.set(0,v,0)}}}else"rot"===n?a.Quaternion.slerp(r,s,k.quaternion,q):"scl"===n&&(f=k.scale,f.x=r[0]+(s[0]-r[0])*q,f.y=r[1]+(s[1]-r[1])*q,f.z=r[2]+(s[2]-r[2])*q)}}}}(),a.Animation.prototype.getNextKeyWith=function(b,c,d){var e=this.data.hierarchy[c].keys;for(this.interpolationType===a.AnimationHandler.CATMULLROM||this.interpolationType===a.AnimationHandler.CATMULLROM_FORWARD?d=d0?d:0:d>=0?d:d+e.length;d>=0;d--)if(void 0!==e[d][b])return e[d];return this.data.hierarchy[c].keys[e.length-1]},a.KeyFrameAnimation=function(b,c){this.root=b,this.data=a.AnimationHandler.get(c),this.hierarchy=a.AnimationHandler.parse(b),this.currentTime=0,this.timeScale=.001,this.isPlaying=!1,this.isPaused=!0,this.loop=!0;for(var d=0,e=this.hierarchy.length;e>d;d++){var f=this.data.hierarchy[d].keys,g=this.data.hierarchy[d].sids,h=this.hierarchy[d];if(f.length&&g){for(var i=0;ic;c++){d=this.hierarchy[c],e=this.data.hierarchy[c],void 0===e.animationCache&&(e.animationCache={},e.animationCache.prevKey=null,e.animationCache.nextKey=null,e.animationCache.originalMatrix=d instanceof a.Bone?d.skinMatrix:d.matrix);var g=this.data.hierarchy[c].keys;g.length&&(e.animationCache.prevKey=g[0],e.animationCache.nextKey=g[1],this.startTime=Math.min(g[0].time,this.startTime),this.endTime=Math.max(g[g.length-1].time,this.endTime))}this.update(0)}this.isPaused=!1,a.AnimationHandler.addToUpdate(this)},a.KeyFrameAnimation.prototype.pause=function(){this.isPaused?a.AnimationHandler.addToUpdate(this):a.AnimationHandler.removeFromUpdate(this),this.isPaused=!this.isPaused},a.KeyFrameAnimation.prototype.stop=function(){this.isPlaying=!1,this.isPaused=!1,a.AnimationHandler.removeFromUpdate(this);for(var b=0;bb&&(this.currentTime%=b),this.currentTime=Math.min(this.currentTime,b);for(var c=0,d=this.hierarchy.length;d>c;c++){var e=this.hierarchy[c],f=this.data.hierarchy[c],g=f.keys,h=f.animationCache;if(g.length){var i=h.prevKey,j=h.nextKey;if(j.time<=this.currentTime){for(;j.timei.index;)i=j,j=g[i.index+1];h.prevKey=i,h.nextKey=j}j.time>=this.currentTime?i.interpolate(j,this.currentTime):i.interpolate(j,j.time),this.data.hierarchy[c].node.updateMatrix(),e.matrixWorldNeedsUpdate=!0}}}},a.KeyFrameAnimation.prototype.getNextKeyWith=function(a,b,c){var d=this.data.hierarchy[b].keys;for(c%=d.length;c=0?c:c+d.length;c>=0;c--)if(d[c].hasTarget(a))return d[c];return d[d.length-1]},a.MorphAnimation=function(a){this.mesh=a,this.frames=a.morphTargetInfluences.length,this.currentTime=0,this.duration=1e3,this.loop=!0,this.isPlaying=!1},a.MorphAnimation.prototype={play:function(){this.isPlaying=!0},pause:function(){this.isPlaying=!1},update:function(){var a=0,b=0;return function(c){if(this.isPlaying!==!1){this.currentTime+=c,this.loop===!0&&this.currentTime>this.duration&&(this.currentTime%=this.duration),this.currentTime=Math.min(this.currentTime,this.duration);var d=this.duration/this.frames,e=Math.floor(this.currentTime/d);e!=b&&(this.mesh.morphTargetInfluences[a]=0,this.mesh.morphTargetInfluences[b]=1,this.mesh.morphTargetInfluences[e]=0,a=b,b=e),this.mesh.morphTargetInfluences[e]=this.currentTime%d/d,this.mesh.morphTargetInfluences[a]=1-this.mesh.morphTargetInfluences[e]}}}()},a.CubeCamera=function(b,c,d){a.Object3D.call(this);var e=90,f=1,g=new a.PerspectiveCamera(e,f,b,c);g.up.set(0,-1,0),g.lookAt(new a.Vector3(1,0,0)),this.add(g);var h=new a.PerspectiveCamera(e,f,b,c);h.up.set(0,-1,0),h.lookAt(new a.Vector3(-1,0,0)),this.add(h);var i=new a.PerspectiveCamera(e,f,b,c);i.up.set(0,0,1),i.lookAt(new a.Vector3(0,1,0)),this.add(i);var j=new a.PerspectiveCamera(e,f,b,c);j.up.set(0,0,-1),j.lookAt(new a.Vector3(0,-1,0)),this.add(j);var k=new a.PerspectiveCamera(e,f,b,c);k.up.set(0,-1,0),k.lookAt(new a.Vector3(0,0,1)),this.add(k);var l=new a.PerspectiveCamera(e,f,b,c);l.up.set(0,-1,0),l.lookAt(new a.Vector3(0,0,-1)),this.add(l),this.renderTarget=new a.WebGLRenderTargetCube(d,d,{format:a.RGBFormat,magFilter:a.LinearFilter,minFilter:a.LinearFilter}),this.updateCubeMap=function(a,b){var c=this.renderTarget,d=c.generateMipmaps;c.generateMipmaps=!1,c.activeCubeFace=0,a.render(b,g,c),c.activeCubeFace=1,a.render(b,h,c),c.activeCubeFace=2,a.render(b,i,c),c.activeCubeFace=3,a.render(b,j,c),c.activeCubeFace=4,a.render(b,k,c),c.generateMipmaps=d,c.activeCubeFace=5,a.render(b,l,c)}},a.CubeCamera.prototype=Object.create(a.Object3D.prototype),a.CombinedCamera=function(b,c,d,e,f,g,h){a.Camera.call(this),this.fov=d,this.left=-b/2,this.right=b/2,this.top=c/2,this.bottom=-c/2,this.cameraO=new a.OrthographicCamera(b/-2,b/2,c/2,c/-2,g,h),this.cameraP=new a.PerspectiveCamera(d,b/c,e,f),this.zoom=1,this.toPerspective()},a.CombinedCamera.prototype=Object.create(a.Camera.prototype),a.CombinedCamera.prototype.toPerspective=function(){this.near=this.cameraP.near,this.far=this.cameraP.far,this.cameraP.fov=this.fov/this.zoom,this.cameraP.updateProjectionMatrix(),this.projectionMatrix=this.cameraP.projectionMatrix,this.inPerspectiveMode=!0,this.inOrthographicMode=!1},a.CombinedCamera.prototype.toOrthographic=function(){var a=this.fov,b=this.cameraP.aspect,c=this.cameraP.near,d=this.cameraP.far,e=(c+d)/2,f=Math.tan(a/2)*e,g=2*f,h=g*b,i=h/2;f/=this.zoom,i/=this.zoom,this.cameraO.left=-i,this.cameraO.right=i,this.cameraO.top=f,this.cameraO.bottom=-f,this.cameraO.updateProjectionMatrix(),this.near=this.cameraO.near,this.far=this.cameraO.far,this.projectionMatrix=this.cameraO.projectionMatrix,this.inPerspectiveMode=!1,this.inOrthographicMode=!0},a.CombinedCamera.prototype.setSize=function(a,b){this.cameraP.aspect=a/b,this.left=-a/2,this.right=a/2,this.top=b/2,this.bottom=-b/2},a.CombinedCamera.prototype.setFov=function(a){this.fov=a,this.inPerspectiveMode?this.toPerspective():this.toOrthographic()},a.CombinedCamera.prototype.updateProjectionMatrix=function(){this.inPerspectiveMode?this.toPerspective():(this.toPerspective(),this.toOrthographic())},a.CombinedCamera.prototype.setLens=function(b,c){void 0===c&&(c=24);var d=2*a.Math.radToDeg(Math.atan(c/(2*b)));return this.setFov(d),d},a.CombinedCamera.prototype.setZoom=function(a){this.zoom=a,this.inPerspectiveMode?this.toPerspective():this.toOrthographic()},a.CombinedCamera.prototype.toFrontView=function(){this.rotation.x=0,this.rotation.y=0,this.rotation.z=0,this.rotationAutoUpdate=!1},a.CombinedCamera.prototype.toBackView=function(){this.rotation.x=0,this.rotation.y=Math.PI,this.rotation.z=0,this.rotationAutoUpdate=!1},a.CombinedCamera.prototype.toLeftView=function(){this.rotation.x=0,this.rotation.y=-Math.PI/2,this.rotation.z=0,this.rotationAutoUpdate=!1},a.CombinedCamera.prototype.toRightView=function(){this.rotation.x=0,this.rotation.y=Math.PI/2,this.rotation.z=0,this.rotationAutoUpdate=!1},a.CombinedCamera.prototype.toTopView=function(){this.rotation.x=-Math.PI/2,this.rotation.y=0,this.rotation.z=0,this.rotationAutoUpdate=!1},a.CombinedCamera.prototype.toBottomView=function(){this.rotation.x=Math.PI/2,this.rotation.y=0,this.rotation.z=0,this.rotationAutoUpdate=!1},a.BoxGeometry=function(b,c,d,e,f,g){function h(b,c,d,e,f,g,h,j){var k,l,m,n=i.widthSegments,o=i.heightSegments,p=f/2,q=g/2,r=i.vertices.length;"x"===b&&"y"===c||"y"===b&&"x"===c?k="z":"x"===b&&"z"===c||"z"===b&&"x"===c?(k="y",o=i.depthSegments):("z"===b&&"y"===c||"y"===b&&"z"===c)&&(k="x",n=i.depthSegments);var s=n+1,t=o+1,u=f/n,v=g/o,w=new a.Vector3;for(w[k]=h>0?1:-1,m=0;t>m;m++)for(l=0;s>l;l++){var x=new a.Vector3;x[b]=(l*u-p)*d,x[c]=(m*v-q)*e,x[k]=h,i.vertices.push(x)}for(m=0;o>m;m++)for(l=0;n>l;l++){var y=l+s*m,z=l+s*(m+1),A=l+1+s*(m+1),B=l+1+s*m,C=new a.Vector2(l/n,1-m/o),D=new a.Vector2(l/n,1-(m+1)/o),E=new a.Vector2((l+1)/n,1-(m+1)/o),F=new a.Vector2((l+1)/n,1-m/o),G=new a.Face3(y+r,z+r,B+r);G.normal.copy(w),G.vertexNormals.push(w.clone(),w.clone(),w.clone()),G.materialIndex=j,i.faces.push(G),i.faceVertexUvs[0].push([C,D,F]),G=new a.Face3(z+r,A+r,B+r),G.normal.copy(w),G.vertexNormals.push(w.clone(),w.clone(),w.clone()),G.materialIndex=j,i.faces.push(G),i.faceVertexUvs[0].push([D.clone(),E,F.clone()])}}a.Geometry.call(this);var i=this;this.width=b,this.height=c,this.depth=d,this.widthSegments=e||1,this.heightSegments=f||1,this.depthSegments=g||1;var j=this.width/2,k=this.height/2,l=this.depth/2;h("z","y",-1,-1,this.depth,this.height,j,0),h("z","y",1,-1,this.depth,this.height,-j,1),h("x","z",1,1,this.width,this.depth,k,2),h("x","z",1,-1,this.width,this.depth,-k,3),h("x","y",1,-1,this.width,this.height,l,4),h("x","y",-1,-1,this.width,this.height,-l,5),this.computeCentroids(),this.mergeVertices()},a.BoxGeometry.prototype=Object.create(a.Geometry.prototype),a.CircleGeometry=function(b,c,d,e){a.Geometry.call(this),this.radius=b=b||50,this.segments=c=void 0!==c?Math.max(3,c):8,this.thetaStart=d=void 0!==d?d:0,this.thetaLength=e=void 0!==e?e:2*Math.PI;var f,g=[],h=new a.Vector3,i=new a.Vector2(.5,.5);for(this.vertices.push(h),g.push(i),f=0;c>=f;f++){var j=new a.Vector3,k=d+f/c*e;j.x=b*Math.cos(k),j.y=b*Math.sin(k),this.vertices.push(j),g.push(new a.Vector2((j.x/b+1)/2,(j.y/b+1)/2))}var l=new a.Vector3(0,0,1);for(f=1;c>=f;f++){var m=f,n=f+1,o=0;this.faces.push(new a.Face3(m,n,o,[l.clone(),l.clone(),l.clone()])),this.faceVertexUvs[0].push([g[f].clone(),g[f+1].clone(),i.clone()])}this.computeCentroids(),this.computeFaceNormals(),this.boundingSphere=new a.Sphere(new a.Vector3,b)},a.CircleGeometry.prototype=Object.create(a.Geometry.prototype),a.CubeGeometry=a.BoxGeometry,a.CylinderGeometry=function(b,c,d,e,f,g){a.Geometry.call(this),this.radiusTop=b=void 0!==b?b:20,this.radiusBottom=c=void 0!==c?c:20,this.height=d=void 0!==d?d:100,this.radialSegments=e=e||8,this.heightSegments=f=f||1,this.openEnded=g=void 0!==g?g:!1;var h,i,j=d/2,k=[],l=[];for(i=0;f>=i;i++){var m=[],n=[],o=i/f,p=o*(c-b)+b;for(h=0;e>=h;h++){var q=h/e,r=new a.Vector3;r.x=p*Math.sin(q*Math.PI*2),r.y=-o*d+j,r.z=p*Math.cos(q*Math.PI*2),this.vertices.push(r),m.push(this.vertices.length-1),n.push(new a.Vector2(q,1-o))}k.push(m),l.push(n)}var s,t,u=(c-b)/d;for(h=0;e>h;h++)for(0!==b?(s=this.vertices[k[0][h]].clone(),t=this.vertices[k[0][h+1]].clone()):(s=this.vertices[k[1][h]].clone(),t=this.vertices[k[1][h+1]].clone()),s.setY(Math.sqrt(s.x*s.x+s.z*s.z)*u).normalize(),t.setY(Math.sqrt(t.x*t.x+t.z*t.z)*u).normalize(),i=0;f>i;i++){var v=k[i][h],w=k[i+1][h],x=k[i+1][h+1],y=k[i][h+1],z=s.clone(),A=s.clone(),B=t.clone(),C=t.clone(),D=l[i][h].clone(),E=l[i+1][h].clone(),F=l[i+1][h+1].clone(),G=l[i][h+1].clone();this.faces.push(new a.Face3(v,w,y,[z,A,C])),this.faceVertexUvs[0].push([D,E,G]),this.faces.push(new a.Face3(w,x,y,[A.clone(),B,C.clone()])),this.faceVertexUvs[0].push([E.clone(),F,G.clone()])}if(g===!1&&b>0)for(this.vertices.push(new a.Vector3(0,j,0)),h=0;e>h;h++){var v=k[0][h],w=k[0][h+1],x=this.vertices.length-1,z=new a.Vector3(0,1,0),A=new a.Vector3(0,1,0),B=new a.Vector3(0,1,0),D=l[0][h].clone(),E=l[0][h+1].clone(),F=new a.Vector2(E.x,0);this.faces.push(new a.Face3(v,w,x,[z,A,B])),this.faceVertexUvs[0].push([D,E,F])}if(g===!1&&c>0)for(this.vertices.push(new a.Vector3(0,-j,0)),h=0;e>h;h++){var v=k[i][h+1],w=k[i][h],x=this.vertices.length-1,z=new a.Vector3(0,-1,0),A=new a.Vector3(0,-1,0),B=new a.Vector3(0,-1,0),D=l[i][h+1].clone(),E=l[i][h].clone(),F=new a.Vector2(E.x,1);this.faces.push(new a.Face3(v,w,x,[z,A,B])),this.faceVertexUvs[0].push([D,E,F])}this.computeCentroids(),this.computeFaceNormals()},a.CylinderGeometry.prototype=Object.create(a.Geometry.prototype),a.ExtrudeGeometry=function(b,c){return"undefined"==typeof b?void(b=[]):(a.Geometry.call(this),b=b instanceof Array?b:[b],this.shapebb=b[b.length-1].getBoundingBox(),this.addShapeList(b,c),this.computeCentroids(),void this.computeFaceNormals())},a.ExtrudeGeometry.prototype=Object.create(a.Geometry.prototype),a.ExtrudeGeometry.prototype.addShapeList=function(a,b){for(var c=a.length,d=0;c>d;d++){var e=a[d];this.addShape(e,b)}},a.ExtrudeGeometry.prototype.addShape=function(b,c){function d(a,b,c){return b||console.log("die"),b.clone().multiplyScalar(c).add(a)}function e(b,c,d){var e,f,g=1e-10,h=a.Math.sign,i=1,j=b.x-c.x,k=b.y-c.y,l=d.x-b.x,m=d.y-b.y,n=j*j+k*k,o=j*m-k*l;if(Math.abs(o)>g){var p=Math.sqrt(n),q=Math.sqrt(l*l+m*m),r=c.x-k/p,s=c.y+j/p,t=d.x-m/q,u=d.y+l/q,v=((t-r)*m-(u-s)*l)/(j*m-k*l);e=r+j*v-b.x,f=s+k*v-b.y;var w=e*e+f*f;if(2>=w)return new a.Vector2(e,f);i=Math.sqrt(w/2)}else{var x=!1;j>g?l>g&&(x=!0):-g>j?-g>l&&(x=!0):h(k)==h(m)&&(x=!0),x?(e=-k,f=j,i=Math.sqrt(n)):(e=j,f=k,i=Math.sqrt(n/2))}return new a.Vector2(e/i,f/i)}function f(){if(u){var a=0,b=T*a;for(W=0;U>W;W++)S=L[W],j(S[2]+b,S[1]+b,S[0]+b,!0);for(a=w+2*t,b=T*a,W=0;U>W;W++)S=L[W],j(S[0]+b,S[1]+b,S[2]+b,!1)}else{for(W=0;U>W;W++)S=L[W],j(S[2],S[1],S[0],!0);for(W=0;U>W;W++)S=L[W],j(S[0]+T*w,S[1]+T*w,S[2]+T*w,!1)}}function g(){var a=0;for(h(M,a),a+=M.length,D=0,E=J.length;E>D;D++)C=J[D],h(C,a),a+=C.length}function h(a,b){var c,d;for(W=a.length;--W>=0;){c=W,d=W-1,0>d&&(d=a.length-1);var e=0,f=w+2*t;for(e=0;f>e;e++){var g=T*e,h=T*(e+1),i=b+c+g,j=b+d+g,l=b+d+h,m=b+c+h;k(i,j,l,m,a,e,f,c,d)}}}function i(b,c,d){F.vertices.push(new a.Vector3(b,c,d))}function j(d,e,f,g){d+=G,e+=G,f+=G,F.faces.push(new a.Face3(d,e,f,null,null,z));var h=g?B.generateBottomUV(F,b,c,d,e,f):B.generateTopUV(F,b,c,d,e,f);F.faceVertexUvs[0].push(h)}function k(d,e,f,g,h,i,j,k,l){d+=G,e+=G,f+=G,g+=G,F.faces.push(new a.Face3(d,e,g,null,null,A)),F.faces.push(new a.Face3(e,f,g,null,null,A));var m=B.generateSideWallUV(F,b,h,c,d,e,f,g,i,j,k,l);F.faceVertexUvs[0].push([m[0],m[1],m[3]]),F.faceVertexUvs[0].push([m[1],m[2],m[3]])}{var l,m,n,o,p,q=void 0!==c.amount?c.amount:100,r=void 0!==c.bevelThickness?c.bevelThickness:6,s=void 0!==c.bevelSize?c.bevelSize:r-2,t=void 0!==c.bevelSegments?c.bevelSegments:3,u=void 0!==c.bevelEnabled?c.bevelEnabled:!0,v=void 0!==c.curveSegments?c.curveSegments:12,w=void 0!==c.steps?c.steps:1,x=c.extrudePath,y=!1,z=c.material,A=c.extrudeMaterial,B=void 0!==c.UVGenerator?c.UVGenerator:a.ExtrudeGeometry.WorldUVGenerator;this.shapebb}x&&(l=x.getSpacedPoints(w),y=!0,u=!1,m=void 0!==c.frames?c.frames:new a.TubeGeometry.FrenetFrames(x,w,!1),n=new a.Vector3,o=new a.Vector3,p=new a.Vector3),u||(t=0,r=0,s=0);var C,D,E,F=this,G=this.vertices.length,H=b.extractPoints(v),I=H.shape,J=H.holes,K=!a.Shape.Utils.isClockWise(I);if(K){for(I=I.reverse(),D=0,E=J.length;E>D;D++)C=J[D],a.Shape.Utils.isClockWise(C)&&(J[D]=C.reverse());K=!1}var L=a.Shape.Utils.triangulateShape(I,J),M=I;for(D=0,E=J.length;E>D;D++)C=J[D],I=I.concat(C);for(var N,O,P,Q,R,S,T=I.length,U=L.length,V=(M.length,180/Math.PI,[]),W=0,X=M.length,Y=X-1,Z=W+1;X>W;W++,Y++,Z++){Y===X&&(Y=0),Z===X&&(Z=0);{M[W],M[Y],M[Z]}V[W]=e(M[W],M[Y],M[Z])}var $,_=[],ab=V.concat();for(D=0,E=J.length;E>D;D++){for(C=J[D],$=[],W=0,X=C.length,Y=X-1,Z=W+1;X>W;W++,Y++,Z++)Y===X&&(Y=0),Z===X&&(Z=0),$[W]=e(C[W],C[Y],C[Z]);_.push($),ab=ab.concat($)}for(N=0;t>N;N++){for(P=N/t,Q=r*(1-P),O=s*Math.sin(P*Math.PI/2),W=0,X=M.length;X>W;W++)R=d(M[W],V[W],O),i(R.x,R.y,-Q);for(D=0,E=J.length;E>D;D++)for(C=J[D],$=_[D],W=0,X=C.length;X>W;W++)R=d(C[W],$[W],O),i(R.x,R.y,-Q)}for(O=s,W=0;T>W;W++)R=u?d(I[W],ab[W],O):I[W],y?(o.copy(m.normals[0]).multiplyScalar(R.x),n.copy(m.binormals[0]).multiplyScalar(R.y),p.copy(l[0]).add(o).add(n),i(p.x,p.y,p.z)):i(R.x,R.y,0);var bb;for(bb=1;w>=bb;bb++)for(W=0;T>W;W++)R=u?d(I[W],ab[W],O):I[W],y?(o.copy(m.normals[bb]).multiplyScalar(R.x),n.copy(m.binormals[bb]).multiplyScalar(R.y),p.copy(l[bb]).add(o).add(n),i(p.x,p.y,p.z)):i(R.x,R.y,q/w*bb);for(N=t-1;N>=0;N--){for(P=N/t,Q=r*(1-P),O=s*Math.sin(P*Math.PI/2),W=0,X=M.length;X>W;W++)R=d(M[W],V[W],O),i(R.x,R.y,q+Q);for(D=0,E=J.length;E>D;D++)for(C=J[D],$=_[D],W=0,X=C.length;X>W;W++)R=d(C[W],$[W],O),y?i(R.x,R.y+l[w-1].y,l[w-1].x+Q):i(R.x,R.y,q+Q)}f(),g()},a.ExtrudeGeometry.WorldUVGenerator={generateTopUV:function(b,c,d,e,f,g){var h=b.vertices[e].x,i=b.vertices[e].y,j=b.vertices[f].x,k=b.vertices[f].y,l=b.vertices[g].x,m=b.vertices[g].y;return[new a.Vector2(h,i),new a.Vector2(j,k),new a.Vector2(l,m)]},generateBottomUV:function(a,b,c,d,e,f){return this.generateTopUV(a,b,c,d,e,f)},generateSideWallUV:function(b,c,d,e,f,g,h,i){var j=b.vertices[f].x,k=b.vertices[f].y,l=b.vertices[f].z,m=b.vertices[g].x,n=b.vertices[g].y,o=b.vertices[g].z,p=b.vertices[h].x,q=b.vertices[h].y,r=b.vertices[h].z,s=b.vertices[i].x,t=b.vertices[i].y,u=b.vertices[i].z;return Math.abs(k-n)<.01?[new a.Vector2(j,1-l),new a.Vector2(m,1-o),new a.Vector2(p,1-r),new a.Vector2(s,1-u)]:[new a.Vector2(k,1-l),new a.Vector2(n,1-o),new a.Vector2(q,1-r),new a.Vector2(t,1-u)]}},a.ExtrudeGeometry.__v1=new a.Vector2,a.ExtrudeGeometry.__v2=new a.Vector2,a.ExtrudeGeometry.__v3=new a.Vector2,a.ExtrudeGeometry.__v4=new a.Vector2,a.ExtrudeGeometry.__v5=new a.Vector2,a.ExtrudeGeometry.__v6=new a.Vector2,a.ShapeGeometry=function(b,c){a.Geometry.call(this),b instanceof Array==!1&&(b=[b]),this.shapebb=b[b.length-1].getBoundingBox(),this.addShapeList(b,c),this.computeCentroids(),this.computeFaceNormals()},a.ShapeGeometry.prototype=Object.create(a.Geometry.prototype),a.ShapeGeometry.prototype.addShapeList=function(a,b){for(var c=0,d=a.length;d>c;c++)this.addShape(a[c],b);return this},a.ShapeGeometry.prototype.addShape=function(b,c){void 0===c&&(c={});var d,e,f,g=void 0!==c.curveSegments?c.curveSegments:12,h=c.material,i=void 0===c.UVGenerator?a.ExtrudeGeometry.WorldUVGenerator:c.UVGenerator,j=(this.shapebb,this.vertices.length),k=b.extractPoints(g),l=k.shape,m=k.holes,n=!a.Shape.Utils.isClockWise(l);if(n){for(l=l.reverse(),d=0,e=m.length;e>d;d++)f=m[d],a.Shape.Utils.isClockWise(f)&&(m[d]=f.reverse());n=!1}var o=a.Shape.Utils.triangulateShape(l,m),p=l;for(d=0,e=m.length;e>d;d++)f=m[d],l=l.concat(f);{var q,r,s=l.length,t=o.length;p.length}for(d=0;s>d;d++)q=l[d],this.vertices.push(new a.Vector3(q.x,q.y,0));for(d=0;t>d;d++){r=o[d];var u=r[0]+j,v=r[1]+j,w=r[2]+j;this.faces.push(new a.Face3(u,v,w,null,null,h)),this.faceVertexUvs[0].push(i.generateBottomUV(this,b,c,u,v,w))}},a.LatheGeometry=function(b,c,d,e){a.Geometry.call(this),c=c||12,d=d||0,e=e||2*Math.PI;for(var f=1/(b.length-1),g=1/c,h=0,i=c;i>=h;h++)for(var j=d+h*g*e,k=Math.cos(j),l=Math.sin(j),m=0,n=b.length;n>m;m++){var o=b[m],p=new a.Vector3;p.x=k*o.x-l*o.y,p.y=l*o.x+k*o.y,p.z=o.z,this.vertices.push(p)}for(var q=b.length,h=0,i=c;i>h;h++)for(var m=0,n=b.length-1;n>m;m++){var r=m+q*h,s=r,t=r+q,k=r+1+q,u=r+1,v=h*g,w=m*f,x=v+g,y=w+f;this.faces.push(new a.Face3(s,t,u)),this.faceVertexUvs[0].push([new a.Vector2(v,w),new a.Vector2(x,w),new a.Vector2(v,y)]),this.faces.push(new a.Face3(t,k,u)),this.faceVertexUvs[0].push([new a.Vector2(x,w),new a.Vector2(x,y),new a.Vector2(v,y)])}this.mergeVertices(),this.computeCentroids(),this.computeFaceNormals(),this.computeVertexNormals()},a.LatheGeometry.prototype=Object.create(a.Geometry.prototype),a.PlaneGeometry=function(b,c,d,e){a.Geometry.call(this),this.width=b,this.height=c,this.widthSegments=d||1,this.heightSegments=e||1;var f,g,h=b/2,i=c/2,j=this.widthSegments,k=this.heightSegments,l=j+1,m=k+1,n=this.width/j,o=this.height/k,p=new a.Vector3(0,0,1);for(g=0;m>g;g++)for(f=0;l>f;f++){var q=f*n-h,r=g*o-i;this.vertices.push(new a.Vector3(q,-r,0))}for(g=0;k>g;g++)for(f=0;j>f;f++){var s=f+l*g,t=f+l*(g+1),u=f+1+l*(g+1),v=f+1+l*g,w=new a.Vector2(f/j,1-g/k),x=new a.Vector2(f/j,1-(g+1)/k),y=new a.Vector2((f+1)/j,1-(g+1)/k),z=new a.Vector2((f+1)/j,1-g/k),A=new a.Face3(s,t,v);A.normal.copy(p),A.vertexNormals.push(p.clone(),p.clone(),p.clone()),this.faces.push(A),this.faceVertexUvs[0].push([w,x,z]),A=new a.Face3(t,u,v),A.normal.copy(p),A.vertexNormals.push(p.clone(),p.clone(),p.clone()),this.faces.push(A),this.faceVertexUvs[0].push([x.clone(),y,z.clone()])}this.computeCentroids()},a.PlaneGeometry.prototype=Object.create(a.Geometry.prototype),a.RingGeometry=function(b,c,d,e,f,g){a.Geometry.call(this),b=b||0,c=c||50,f=void 0!==f?f:0,g=void 0!==g?g:2*Math.PI,d=void 0!==d?Math.max(3,d):8,e=void 0!==e?Math.max(3,e):8;var h,i,j=[],k=b,l=(c-b)/e;for(h=0;e>=h;h++){for(i=0;d>=i;i++){var m=new a.Vector3,n=f+i/d*g;m.x=k*Math.cos(n),m.y=k*Math.sin(n),this.vertices.push(m),j.push(new a.Vector2((m.x/c+1)/2,(m.y/c+1)/2))}k+=l}var o=new a.Vector3(0,0,1);for(h=0;e>h;h++){var p=h*d;for(i=0;d>=i;i++){var n=i+p,q=n+h,r=n+d+h,s=n+d+1+h;this.faces.push(new a.Face3(q,r,s,[o.clone(),o.clone(),o.clone()])),this.faceVertexUvs[0].push([j[q].clone(),j[r].clone(),j[s].clone()]),q=n+h,r=n+d+1+h,s=n+1+h,this.faces.push(new a.Face3(q,r,s,[o.clone(),o.clone(),o.clone()])),this.faceVertexUvs[0].push([j[q].clone(),j[r].clone(),j[s].clone()])}}this.computeCentroids(),this.computeFaceNormals(),this.boundingSphere=new a.Sphere(new a.Vector3,k)},a.RingGeometry.prototype=Object.create(a.Geometry.prototype),a.SphereGeometry=function(b,c,d,e,f,g,h){a.Geometry.call(this),this.radius=b=b||50,this.widthSegments=c=Math.max(3,Math.floor(c)||8),this.heightSegments=d=Math.max(2,Math.floor(d)||6),this.phiStart=e=void 0!==e?e:0,this.phiLength=f=void 0!==f?f:2*Math.PI,this.thetaStart=g=void 0!==g?g:0,this.thetaLength=h=void 0!==h?h:Math.PI;var i,j,k=[],l=[];for(j=0;d>=j;j++){var m=[],n=[];for(i=0;c>=i;i++){var o=i/c,p=j/d,q=new a.Vector3;q.x=-b*Math.cos(e+o*f)*Math.sin(g+p*h),q.y=b*Math.cos(g+p*h),q.z=b*Math.sin(e+o*f)*Math.sin(g+p*h),this.vertices.push(q),m.push(this.vertices.length-1),n.push(new a.Vector2(o,1-p))}k.push(m),l.push(n)}for(j=0;jp;p++)for(this.grid[p]=[],k=p/(C-1),o=b.getPointAt(k),h=F[p],i=G[p],j=H[p],q=0;q=h&&(g=h,m.set(1,0,0)),g>=i&&(g=i,m.set(0,1,0)),g>=j&&m.set(0,0,1),q.crossVectors(n[0],m).normalize(),o[0].crossVectors(n[0],q),p[0].crossVectors(n[0],o[0])}var f,g,h,i,j,k,l,m=(new a.Vector3,new a.Vector3),n=(new a.Vector3,[]),o=[],p=[],q=new a.Vector3,r=new a.Matrix4,s=c+1,t=1e-4;for(this.tangents=n,this.normals=o,this.binormals=p,k=0;s>k;k++)l=k/(s-1),n[k]=b.getTangentAt(l),n[k].normalize();for(e(),k=1;s>k;k++)o[k]=o[k-1].clone(),p[k]=p[k-1].clone(),q.crossVectors(n[k-1],n[k]),q.length()>t&&(q.normalize(),f=Math.acos(a.Math.clamp(n[k-1].dot(n[k]),-1,1)),o[k].applyMatrix4(r.makeRotationAxis(q,f))),p[k].crossVectors(n[k],o[k]);if(d)for(f=Math.acos(a.Math.clamp(o[0].dot(o[s-1]),-1,1)),f/=s-1,n[0].dot(q.crossVectors(o[0],o[s-1]))>0&&(f=-f),k=1;s>k;k++)o[k].applyMatrix4(r.makeRotationAxis(n[k],f*k)),p[k].crossVectors(n[k],o[k])},a.PolyhedronGeometry=function(b,c,d,e){function f(b){var c=b.normalize().clone();c.index=l.vertices.push(c)-1;var d=i(b)/2/Math.PI+.5,e=j(b)/Math.PI+.5;return c.uv=new a.Vector2(d,1-e),c}function g(b,c,d){var e=new a.Face3(b.index,c.index,d.index,[b.clone(),c.clone(),d.clone()]);e.centroid.add(b).add(c).add(d).divideScalar(3),l.faces.push(e);var f=i(e.centroid);l.faceVertexUvs[0].push([k(b.uv,b,f),k(c.uv,c,f),k(d.uv,d,f)])}function h(a,b){for(var c=Math.pow(2,b),d=(Math.pow(4,b),f(l.vertices[a.a])),e=f(l.vertices[a.b]),h=f(l.vertices[a.c]),i=[],j=0;c>=j;j++){i[j]=[];for(var k=f(d.clone().lerp(h,j/c)),m=f(e.clone().lerp(h,j/c)),n=c-j,o=0;n>=o;o++)i[j][o]=0==o&&j==c?k:f(k.clone().lerp(m,o/n))}for(var j=0;c>j;j++)for(var o=0;2*(c-j)-1>o;o++){var p=Math.floor(o/2);o%2==0?g(i[j][p+1],i[j+1][p],i[j][p]):g(i[j][p+1],i[j+1][p+1],i[j+1][p])}}function i(a){return Math.atan2(a.z,-a.x)}function j(a){return Math.atan2(-a.y,Math.sqrt(a.x*a.x+a.z*a.z))}function k(b,c,d){return 0>d&&1===b.x&&(b=new a.Vector2(b.x-1,b.y)),0===c.x&&0===c.z&&(b=new a.Vector2(d/2/Math.PI+.5,b.y)),b.clone()}a.Geometry.call(this),d=d||1,e=e||0;for(var l=this,m=0,n=b.length;n>m;m++)f(new a.Vector3(b[m][0],b[m][1],b[m][2]));for(var o=this.vertices,p=[],m=0,n=c.length;n>m;m++){var q=o[c[m][0]],r=o[c[m][1]],s=o[c[m][2]];p[m]=new a.Face3(q.index,r.index,s.index,[q.clone(),r.clone(),s.clone()])}for(var m=0,n=p.length;n>m;m++)h(p[m],e);for(var m=0,n=this.faceVertexUvs[0].length;n>m;m++){var t=this.faceVertexUvs[0][m],u=t[0].x,v=t[1].x,w=t[2].x,x=Math.max(u,Math.max(v,w)),y=Math.min(u,Math.min(v,w));x>.9&&.1>y&&(.2>u&&(t[0].x+=1),.2>v&&(t[1].x+=1),.2>w&&(t[2].x+=1))}for(var m=0,n=this.vertices.length;n>m;m++)this.vertices[m].multiplyScalar(d);this.mergeVertices(),this.computeCentroids(),this.computeFaceNormals(),this.boundingSphere=new a.Sphere(new a.Vector3,d)},a.PolyhedronGeometry.prototype=Object.create(a.Geometry.prototype),a.IcosahedronGeometry=function(b,c){this.radius=b,this.detail=c;var d=(1+Math.sqrt(5))/2,e=[[-1,d,0],[1,d,0],[-1,-d,0],[1,-d,0],[0,-1,d],[0,1,d],[0,-1,-d],[0,1,-d],[d,0,-1],[d,0,1],[-d,0,-1],[-d,0,1]],f=[[0,11,5],[0,5,1],[0,1,7],[0,7,10],[0,10,11],[1,5,9],[5,11,4],[11,10,2],[10,7,6],[7,1,8],[3,9,4],[3,4,2],[3,2,6],[3,6,8],[3,8,9],[4,9,5],[2,4,11],[6,2,10],[8,6,7],[9,8,1]];a.PolyhedronGeometry.call(this,e,f,b,c)},a.IcosahedronGeometry.prototype=Object.create(a.Geometry.prototype),a.OctahedronGeometry=function(b,c){var d=[[1,0,0],[-1,0,0],[0,1,0],[0,-1,0],[0,0,1],[0,0,-1]],e=[[0,2,4],[0,4,3],[0,3,5],[0,5,2],[1,2,5],[1,5,3],[1,3,4],[1,4,2]];a.PolyhedronGeometry.call(this,d,e,b,c)},a.OctahedronGeometry.prototype=Object.create(a.Geometry.prototype),a.TetrahedronGeometry=function(b,c){var d=[[1,1,1],[-1,-1,1],[-1,1,-1],[1,-1,-1]],e=[[2,1,0],[0,3,2],[1,3,0],[2,3,1]];a.PolyhedronGeometry.call(this,d,e,b,c)},a.TetrahedronGeometry.prototype=Object.create(a.Geometry.prototype),a.ParametricGeometry=function(b,c,d){a.Geometry.call(this);var e,f,g,h,i,j=this.vertices,k=this.faces,l=this.faceVertexUvs[0],m=c+1;for(e=0;d>=e;e++)for(i=e/d,f=0;c>=f;f++)h=f/c,g=b(h,i),j.push(g);var n,o,p,q,r,s,t,u;for(e=0;d>e;e++)for(f=0;c>f;f++)n=e*m+f,o=e*m+f+1,p=(e+1)*m+f+1,q=(e+1)*m+f,r=new a.Vector2(f/c,e/d),s=new a.Vector2((f+1)/c,e/d),t=new a.Vector2((f+1)/c,(e+1)/d),u=new a.Vector2(f/c,(e+1)/d),k.push(new a.Face3(n,o,q)),l.push([r,s,u]),k.push(new a.Face3(o,p,q)),l.push([s.clone(),t,u.clone()]);this.computeCentroids(),this.computeFaceNormals(),this.computeVertexNormals()},a.ParametricGeometry.prototype=Object.create(a.Geometry.prototype),a.AxisHelper=function(b){b=b||1;var c=new a.Geometry;c.vertices.push(new a.Vector3,new a.Vector3(b,0,0),new a.Vector3,new a.Vector3(0,b,0),new a.Vector3,new a.Vector3(0,0,b)),c.colors.push(new a.Color(16711680),new a.Color(16755200),new a.Color(65280),new a.Color(11206400),new a.Color(255),new a.Color(43775));var d=new a.LineBasicMaterial({vertexColors:a.VertexColors});a.Line.call(this,c,d,a.LinePieces)},a.AxisHelper.prototype=Object.create(a.Line.prototype),a.ArrowHelper=function(b,c,d,e,f,g){a.Object3D.call(this),void 0===e&&(e=16776960),void 0===d&&(d=1),void 0===f&&(f=.2*d),void 0===g&&(g=.2*f),this.position=c;var h=new a.Geometry;h.vertices.push(new a.Vector3(0,0,0)),h.vertices.push(new a.Vector3(0,1,0)),this.line=new a.Line(h,new a.LineBasicMaterial({color:e})),this.line.matrixAutoUpdate=!1,this.add(this.line);var i=new a.CylinderGeometry(0,.5,1,5,1);i.applyMatrix((new a.Matrix4).makeTranslation(0,-.5,0)),this.cone=new a.Mesh(i,new a.MeshBasicMaterial({color:e})),this.cone.matrixAutoUpdate=!1,this.add(this.cone),this.setDirection(b),this.setLength(d,f,g)},a.ArrowHelper.prototype=Object.create(a.Object3D.prototype),a.ArrowHelper.prototype.setDirection=function(){var b,c=new a.Vector3;return function(a){a.y>.99999?this.quaternion.set(0,0,0,1):a.y<-.99999?this.quaternion.set(1,0,0,0):(c.set(a.z,0,-a.x).normalize(),b=Math.acos(a.y),this.quaternion.setFromAxisAngle(c,b))}}(),a.ArrowHelper.prototype.setLength=function(a,b,c){void 0===b&&(b=.2*a),void 0===c&&(c=.2*b),this.line.scale.set(1,a,1),this.line.updateMatrix(),this.cone.scale.set(c,b,c),this.cone.position.y=a,this.cone.updateMatrix()},a.ArrowHelper.prototype.setColor=function(a){this.line.material.color.setHex(a),this.cone.material.color.setHex(a)},a.BoxHelper=function(b){var c=[new a.Vector3(1,1,1),new a.Vector3(-1,1,1),new a.Vector3(-1,-1,1),new a.Vector3(1,-1,1),new a.Vector3(1,1,-1),new a.Vector3(-1,1,-1),new a.Vector3(-1,-1,-1),new a.Vector3(1,-1,-1)];this.vertices=c;var d=new a.Geometry;d.vertices.push(c[0],c[1],c[1],c[2],c[2],c[3],c[3],c[0],c[4],c[5],c[5],c[6],c[6],c[7],c[7],c[4],c[0],c[4],c[1],c[5],c[2],c[6],c[3],c[7]),a.Line.call(this,d,new a.LineBasicMaterial({color:16776960}),a.LinePieces),void 0!==b&&this.update(b)},a.BoxHelper.prototype=Object.create(a.Line.prototype),a.BoxHelper.prototype.update=function(a){var b=a.geometry;null===b.boundingBox&&b.computeBoundingBox();var c=b.boundingBox.min,d=b.boundingBox.max,e=this.vertices;e[0].set(d.x,d.y,d.z),e[1].set(c.x,d.y,d.z),e[2].set(c.x,c.y,d.z),e[3].set(d.x,c.y,d.z),e[4].set(d.x,d.y,c.z),e[5].set(c.x,d.y,c.z),e[6].set(c.x,c.y,c.z),e[7].set(d.x,c.y,c.z),this.geometry.computeBoundingSphere(),this.geometry.verticesNeedUpdate=!0,this.matrixAutoUpdate=!1,this.matrixWorld=a.matrixWorld},a.BoundingBoxHelper=function(b,c){var d=void 0!==c?c:8947848;this.object=b,this.box=new a.Box3,a.Mesh.call(this,new a.BoxGeometry(1,1,1),new a.MeshBasicMaterial({color:d,wireframe:!0}))},a.BoundingBoxHelper.prototype=Object.create(a.Mesh.prototype),a.BoundingBoxHelper.prototype.update=function(){this.box.setFromObject(this.object),this.box.size(this.scale),this.box.center(this.position)},a.CameraHelper=function(b){function c(a,b,c){d(a,c),d(b,c)}function d(b,c){e.vertices.push(new a.Vector3),e.colors.push(new a.Color(c)),void 0===g[b]&&(g[b]=[]),g[b].push(e.vertices.length-1)}var e=new a.Geometry,f=new a.LineBasicMaterial({color:16777215,vertexColors:a.FaceColors}),g={},h=16755200,i=16711680,j=43775,k=16777215,l=3355443;c("n1","n2",h),c("n2","n4",h),c("n4","n3",h),c("n3","n1",h),c("f1","f2",h),c("f2","f4",h),c("f4","f3",h),c("f3","f1",h),c("n1","f1",h),c("n2","f2",h),c("n3","f3",h),c("n4","f4",h),c("p","n1",i),c("p","n2",i),c("p","n3",i),c("p","n4",i),c("u1","u2",j),c("u2","u3",j),c("u3","u1",j),c("c","t",k),c("p","c",l),c("cn1","cn2",l),c("cn3","cn4",l),c("cf1","cf2",l),c("cf3","cf4",l),a.Line.call(this,e,f,a.LinePieces),this.camera=b,this.matrixWorld=b.matrixWorld,this.matrixAutoUpdate=!1,this.pointMap=g,this.update()},a.CameraHelper.prototype=Object.create(a.Line.prototype),a.CameraHelper.prototype.update=function(){var b=new a.Vector3,c=new a.Camera,d=new a.Projector;return function(){function a(a,f,g,h){b.set(f,g,h),d.unprojectVector(b,c);var i=e.pointMap[a];if(void 0!==i)for(var j=0,k=i.length;k>j;j++)e.geometry.vertices[i[j]].copy(b)}var e=this,f=1,g=1;c.projectionMatrix.copy(this.camera.projectionMatrix),a("c",0,0,-1),a("t",0,0,1),a("n1",-f,-g,-1),a("n2",f,-g,-1),a("n3",-f,g,-1),a("n4",f,g,-1),a("f1",-f,-g,1),a("f2",f,-g,1),a("f3",-f,g,1),a("f4",f,g,1),a("u1",.7*f,1.1*g,-1),a("u2",.7*-f,1.1*g,-1),a("u3",0,2*g,-1),a("cf1",-f,0,1),a("cf2",f,0,1),a("cf3",0,-g,1),a("cf4",0,g,1),a("cn1",-f,0,-1),a("cn2",f,0,-1),a("cn3",0,-g,-1),a("cn4",0,g,-1),this.geometry.verticesNeedUpdate=!0}}(),a.DirectionalLightHelper=function(b,c){a.Object3D.call(this),this.light=b,this.light.updateMatrixWorld(),this.matrixWorld=b.matrixWorld,this.matrixAutoUpdate=!1,c=c||1;var d=new a.PlaneGeometry(c,c),e=new a.MeshBasicMaterial({wireframe:!0,fog:!1});e.color.copy(this.light.color).multiplyScalar(this.light.intensity),this.lightPlane=new a.Mesh(d,e),this.add(this.lightPlane),d=new a.Geometry,d.vertices.push(new a.Vector3),d.vertices.push(new a.Vector3),e=new a.LineBasicMaterial({fog:!1}),e.color.copy(this.light.color).multiplyScalar(this.light.intensity),this.targetLine=new a.Line(d,e),this.add(this.targetLine),this.update()},a.DirectionalLightHelper.prototype=Object.create(a.Object3D.prototype),a.DirectionalLightHelper.prototype.dispose=function(){this.lightPlane.geometry.dispose(),this.lightPlane.material.dispose(),this.targetLine.geometry.dispose(),this.targetLine.material.dispose()},a.DirectionalLightHelper.prototype.update=function(){var b=new a.Vector3,c=new a.Vector3,d=new a.Vector3;return function(){b.setFromMatrixPosition(this.light.matrixWorld),c.setFromMatrixPosition(this.light.target.matrixWorld),d.subVectors(c,b),this.lightPlane.lookAt(d),this.lightPlane.material.color.copy(this.light.color).multiplyScalar(this.light.intensity),this.targetLine.geometry.vertices[1].copy(d),this.targetLine.geometry.verticesNeedUpdate=!0,this.targetLine.material.color.copy(this.lightPlane.material.color)}}(),a.EdgesHelper=function(b,c){var d=void 0!==c?c:16777215,e=[0,0],f={},g=function(a,b){return a-b},h=["a","b","c"],i=new a.BufferGeometry,j=b.geometry.clone();j.mergeVertices(),j.computeFaceNormals();for(var k=j.vertices,l=j.faces,m=0,n=0,o=l.length;o>n;n++)for(var p=l[n],q=0;3>q;q++){e[0]=p[h[q]],e[1]=p[h[(q+1)%3]],e.sort(g);var r=e.toString();void 0===f[r]?(f[r]={vert1:e[0],vert2:e[1],face1:n,face2:void 0},m++):f[r].face2=n}i.addAttribute("position",Float32Array,2*m,3);var s=i.attributes.position.array,t=0;for(var r in f){var u=f[r];if(void 0===u.face2||l[u.face1].normal.dot(l[u.face2].normal)<.9999){var v=k[u.vert1];s[t++]=v.x,s[t++]=v.y,s[t++]=v.z,v=k[u.vert2],s[t++]=v.x,s[t++]=v.y,s[t++]=v.z}}a.Line.call(this,i,new a.LineBasicMaterial({color:d}),a.LinePieces),this.matrixAutoUpdate=!1,this.matrixWorld=b.matrixWorld},a.EdgesHelper.prototype=Object.create(a.Line.prototype),a.FaceNormalsHelper=function(b,c,d,e){this.object=b,this.size=void 0!==c?c:1;for(var f=void 0!==d?d:16776960,g=void 0!==e?e:1,h=new a.Geometry,i=this.object.geometry.faces,j=0,k=i.length;k>j;j++)h.vertices.push(new a.Vector3),h.vertices.push(new a.Vector3);a.Line.call(this,h,new a.LineBasicMaterial({color:f,linewidth:g}),a.LinePieces),this.matrixAutoUpdate=!1,this.normalMatrix=new a.Matrix3,this.update()},a.FaceNormalsHelper.prototype=Object.create(a.Line.prototype),a.FaceNormalsHelper.prototype.update=function(){var b=new a.Vector3;return function(){this.object.updateMatrixWorld(!0),this.normalMatrix.getNormalMatrix(this.object.matrixWorld);for(var a=this.geometry.vertices,c=this.object.geometry.faces,d=this.object.matrixWorld,e=0,f=c.length;f>e;e++){var g=c[e];b.copy(g.normal).applyMatrix3(this.normalMatrix).normalize().multiplyScalar(this.size);var h=2*e;a[h].copy(g.centroid).applyMatrix4(d),a[h+1].addVectors(a[h],b)}return this.geometry.verticesNeedUpdate=!0,this}}(),a.GridHelper=function(b,c){var d=new a.Geometry,e=new a.LineBasicMaterial({vertexColors:a.VertexColors});this.color1=new a.Color(4473924),this.color2=new a.Color(8947848);for(var f=-b;b>=f;f+=c){d.vertices.push(new a.Vector3(-b,0,f),new a.Vector3(b,0,f),new a.Vector3(f,0,-b),new a.Vector3(f,0,b));var g=0===f?this.color1:this.color2;d.colors.push(g,g,g,g)}a.Line.call(this,d,e,a.LinePieces)},a.GridHelper.prototype=Object.create(a.Line.prototype),a.GridHelper.prototype.setColors=function(a,b){this.color1.set(a),this.color2.set(b),this.geometry.colorsNeedUpdate=!0},a.HemisphereLightHelper=function(b,c){a.Object3D.call(this),this.light=b,this.light.updateMatrixWorld(),this.matrixWorld=b.matrixWorld,this.matrixAutoUpdate=!1,this.colors=[new a.Color,new a.Color];var d=new a.SphereGeometry(c,4,2);d.applyMatrix((new a.Matrix4).makeRotationX(-Math.PI/2));for(var e=0,f=8;f>e;e++)d.faces[e].color=this.colors[4>e?0:1];var g=new a.MeshBasicMaterial({vertexColors:a.FaceColors,wireframe:!0});this.lightSphere=new a.Mesh(d,g),this.add(this.lightSphere),this.update()},a.HemisphereLightHelper.prototype=Object.create(a.Object3D.prototype),a.HemisphereLightHelper.prototype.dispose=function(){this.lightSphere.geometry.dispose(),this.lightSphere.material.dispose()},a.HemisphereLightHelper.prototype.update=function(){var b=new a.Vector3;return function(){this.colors[0].copy(this.light.color).multiplyScalar(this.light.intensity),this.colors[1].copy(this.light.groundColor).multiplyScalar(this.light.intensity),this.lightSphere.lookAt(b.setFromMatrixPosition(this.light.matrixWorld).negate()),this.lightSphere.geometry.colorsNeedUpdate=!0}}(),a.PointLightHelper=function(b,c){this.light=b,this.light.updateMatrixWorld();var d=new a.SphereGeometry(c,4,2),e=new a.MeshBasicMaterial({wireframe:!0,fog:!1});e.color.copy(this.light.color).multiplyScalar(this.light.intensity),a.Mesh.call(this,d,e),this.matrixWorld=this.light.matrixWorld,this.matrixAutoUpdate=!1},a.PointLightHelper.prototype=Object.create(a.Mesh.prototype),a.PointLightHelper.prototype.dispose=function(){this.geometry.dispose(),this.material.dispose()},a.PointLightHelper.prototype.update=function(){this.material.color.copy(this.light.color).multiplyScalar(this.light.intensity)},a.SpotLightHelper=function(b){a.Object3D.call(this),this.light=b,this.light.updateMatrixWorld(),this.matrixWorld=b.matrixWorld,this.matrixAutoUpdate=!1;var c=new a.CylinderGeometry(0,1,1,8,1,!0);c.applyMatrix((new a.Matrix4).makeTranslation(0,-.5,0)),c.applyMatrix((new a.Matrix4).makeRotationX(-Math.PI/2));var d=new a.MeshBasicMaterial({wireframe:!0,fog:!1});this.cone=new a.Mesh(c,d),this.add(this.cone),this.update()},a.SpotLightHelper.prototype=Object.create(a.Object3D.prototype),a.SpotLightHelper.prototype.dispose=function(){this.cone.geometry.dispose(),this.cone.material.dispose()},a.SpotLightHelper.prototype.update=function(){var b=new a.Vector3,c=new a.Vector3;return function(){var a=this.light.distance?this.light.distance:1e4,d=a*Math.tan(this.light.angle);this.cone.scale.set(d,d,a),b.setFromMatrixPosition(this.light.matrixWorld),c.setFromMatrixPosition(this.light.target.matrixWorld),this.cone.lookAt(c.sub(b)),this.cone.material.color.copy(this.light.color).multiplyScalar(this.light.intensity)}}(),a.VertexNormalsHelper=function(b,c,d,e){this.object=b,this.size=void 0!==c?c:1;for(var f=void 0!==d?d:16711680,g=void 0!==e?e:1,h=new a.Geometry,i=(b.geometry.vertices,b.geometry.faces),j=0,k=i.length;k>j;j++)for(var l=i[j],m=0,n=l.vertexNormals.length;n>m;m++)h.vertices.push(new a.Vector3),h.vertices.push(new a.Vector3);a.Line.call(this,h,new a.LineBasicMaterial({color:f,linewidth:g}),a.LinePieces),this.matrixAutoUpdate=!1,this.normalMatrix=new a.Matrix3,this.update()},a.VertexNormalsHelper.prototype=Object.create(a.Line.prototype),a.VertexNormalsHelper.prototype.update=function(){var b=new a.Vector3;return function(){var a=["a","b","c","d"];this.object.updateMatrixWorld(!0),this.normalMatrix.getNormalMatrix(this.object.matrixWorld);for(var c=this.geometry.vertices,d=this.object.geometry.vertices,e=this.object.geometry.faces,f=this.object.matrixWorld,g=0,h=0,i=e.length;i>h;h++)for(var j=e[h],k=0,l=j.vertexNormals.length;l>k;k++){var m=j[a[k]],n=d[m],o=j.vertexNormals[k];c[g].copy(n).applyMatrix4(f),b.copy(o).applyMatrix3(this.normalMatrix).normalize().multiplyScalar(this.size),b.add(c[g]),g+=1,c[g].copy(b),g+=1}return this.geometry.verticesNeedUpdate=!0,this}}(),a.VertexTangentsHelper=function(b,c,d,e){this.object=b,this.size=void 0!==c?c:1;for(var f=void 0!==d?d:255,g=void 0!==e?e:1,h=new a.Geometry,i=(b.geometry.vertices,b.geometry.faces),j=0,k=i.length;k>j;j++)for(var l=i[j],m=0,n=l.vertexTangents.length;n>m;m++)h.vertices.push(new a.Vector3),h.vertices.push(new a.Vector3);a.Line.call(this,h,new a.LineBasicMaterial({color:f,linewidth:g}),a.LinePieces),this.matrixAutoUpdate=!1,this.update()},a.VertexTangentsHelper.prototype=Object.create(a.Line.prototype),a.VertexTangentsHelper.prototype.update=function(){var b=new a.Vector3;return function(){var a=["a","b","c","d"];this.object.updateMatrixWorld(!0);for(var c=this.geometry.vertices,d=this.object.geometry.vertices,e=this.object.geometry.faces,f=this.object.matrixWorld,g=0,h=0,i=e.length;i>h;h++)for(var j=e[h],k=0,l=j.vertexTangents.length;l>k;k++){var m=j[a[k]],n=d[m],o=j.vertexTangents[k];c[g].copy(n).applyMatrix4(f),b.copy(o).transformDirection(f).multiplyScalar(this.size),b.add(c[g]),g+=1,c[g].copy(b),g+=1}return this.geometry.verticesNeedUpdate=!0,this}}(),a.WireframeHelper=function(b,c){var d=void 0!==c?c:16777215,e=[0,0],f={},g=function(a,b){return a-b},h=["a","b","c"],i=new a.BufferGeometry;if(b.geometry instanceof a.Geometry){for(var j=b.geometry.vertices,k=b.geometry.faces,l=0,m=new Uint32Array(6*k.length),n=0,o=k.length;o>n;n++)for(var p=k[n],q=0;3>q;q++){e[0]=p[h[q]],e[1]=p[h[(q+1)%3]],e.sort(g);var r=e.toString();void 0===f[r]&&(m[2*l]=e[0],m[2*l+1]=e[1],f[r]=!0,l++)}i.addAttribute("position",Float32Array,2*l,3);for(var s=i.attributes.position.array,n=0,o=l;o>n;n++)for(var q=0;2>q;q++){var t=j[m[2*n+q]],u=6*n+3*q;s[u+0]=t.x,s[u+1]=t.y,s[u+2]=t.z}}else if(b.geometry instanceof a.BufferGeometry&&void 0!==b.geometry.attributes.index){for(var j=b.geometry.attributes.position.array,v=b.geometry.attributes.index.array,w=b.geometry.offsets,l=0,m=new Uint32Array(2*v.length),x=0,y=w.length;y>x;++x)for(var z=w[x].start,A=w[x].count,u=w[x].index,n=z,B=z+A;B>n;n+=3)for(var q=0;3>q;q++){e[0]=u+v[n+q],e[1]=u+v[n+(q+1)%3],e.sort(g);var r=e.toString();void 0===f[r]&&(m[2*l]=e[0],m[2*l+1]=e[1],f[r]=!0,l++)}i.addAttribute("position",Float32Array,2*l,3);for(var s=i.attributes.position.array,n=0,o=l;o>n;n++)for(var q=0;2>q;q++){var u=6*n+3*q,C=3*m[2*n+q];s[u+0]=j[C],s[u+1]=j[C+1],s[u+2]=j[C+2]}}else if(b.geometry instanceof a.BufferGeometry){var j=b.geometry.attributes.position.array,l=j.length/3,D=l/3;i.addAttribute("position",Float32Array,2*l,3);for(var s=i.attributes.position.array,n=0,o=D;o>n;n++)for(var q=0;3>q;q++){var u=18*n+6*q,E=9*n+3*q;s[u+0]=j[E],s[u+1]=j[E+1],s[u+2]=j[E+2];var C=9*n+3*((q+1)%3);s[u+3]=j[C],s[u+4]=j[C+1],s[u+5]=j[C+2]}}a.Line.call(this,i,new a.LineBasicMaterial({color:d}),a.LinePieces),this.matrixAutoUpdate=!1,this.matrixWorld=b.matrixWorld},a.WireframeHelper.prototype=Object.create(a.Line.prototype),a.ImmediateRenderObject=function(){a.Object3D.call(this),this.render=function(){}},a.ImmediateRenderObject.prototype=Object.create(a.Object3D.prototype),a.LensFlare=function(b,c,d,e,f){a.Object3D.call(this),this.lensFlares=[],this.positionScreen=new a.Vector3,this.customUpdateCallback=void 0,void 0!==b&&this.add(b,c,d,e,f)},a.LensFlare.prototype=Object.create(a.Object3D.prototype),a.LensFlare.prototype.add=function(b,c,d,e,f,g){void 0===c&&(c=-1),void 0===d&&(d=0),void 0===g&&(g=1),void 0===f&&(f=new a.Color(16777215)),void 0===e&&(e=a.NormalBlending),d=Math.min(d,Math.max(0,d)),this.lensFlares.push({texture:b,size:c,distance:d,x:0,y:0,z:0,scale:1,rotation:1,opacity:g,color:f,blending:e})},a.LensFlare.prototype.updateLensFlares=function(){var a,b,c=this.lensFlares.length,d=2*-this.positionScreen.x,e=2*-this.positionScreen.y;for(a=0;c>a;a++)b=this.lensFlares[a],b.x=this.positionScreen.x+d*b.distance,b.y=this.positionScreen.y+e*b.distance,b.wantedRotation=b.x*Math.PI*.25,b.rotation+=.25*(b.wantedRotation-b.rotation)},a.MorphBlendMesh=function(b,c){a.Mesh.call(this,b,c),this.animationsMap={},this.animationsList=[];var d=this.geometry.morphTargets.length,e="__default",f=0,g=d-1,h=d/1;this.createAnimation(e,f,g,h),this.setAnimationWeight(e,1)},a.MorphBlendMesh.prototype=Object.create(a.Mesh.prototype),a.MorphBlendMesh.prototype.createAnimation=function(a,b,c,d){var e={startFrame:b,endFrame:c,length:c-b+1,fps:d,duration:(c-b)/d,lastFrame:0,currentFrame:0,active:!1,time:0,direction:1,weight:1,directionBackwards:!1,mirroredLoop:!1};this.animationsMap[a]=e,this.animationsList.push(e)},a.MorphBlendMesh.prototype.autoCreateAnimations=function(a){for(var b,c=/([a-z]+)(\d+)/,d={},e=this.geometry,f=0,g=e.morphTargets.length;g>f;f++){var h=e.morphTargets[f],i=h.name.match(c);if(i&&i.length>1){{var j=i[1];i[2]}d[j]||(d[j]={start:1/0,end:-1/0});var k=d[j];fk.end&&(k.end=f),b||(b=j)}}for(var j in d){var k=d[j];this.createAnimation(j,k.start,k.end,a)}this.firstAnimation=b},a.MorphBlendMesh.prototype.setAnimationDirectionForward=function(a){var b=this.animationsMap[a];b&&(b.direction=1,b.directionBackwards=!1)},a.MorphBlendMesh.prototype.setAnimationDirectionBackward=function(a){var b=this.animationsMap[a];b&&(b.direction=-1,b.directionBackwards=!0)},a.MorphBlendMesh.prototype.setAnimationFPS=function(a,b){var c=this.animationsMap[a];c&&(c.fps=b,c.duration=(c.end-c.start)/c.fps)},a.MorphBlendMesh.prototype.setAnimationDuration=function(a,b){var c=this.animationsMap[a];c&&(c.duration=b,c.fps=(c.end-c.start)/c.duration)},a.MorphBlendMesh.prototype.setAnimationWeight=function(a,b){var c=this.animationsMap[a];c&&(c.weight=b)},a.MorphBlendMesh.prototype.setAnimationTime=function(a,b){var c=this.animationsMap[a];c&&(c.time=b)},a.MorphBlendMesh.prototype.getAnimationTime=function(a){var b=0,c=this.animationsMap[a];return c&&(b=c.time),b},a.MorphBlendMesh.prototype.getAnimationDuration=function(a){var b=-1,c=this.animationsMap[a];return c&&(b=c.duration),b},a.MorphBlendMesh.prototype.playAnimation=function(a){var b=this.animationsMap[a];b?(b.time=0,b.active=!0):console.warn("animation["+a+"] undefined")},a.MorphBlendMesh.prototype.stopAnimation=function(a){var b=this.animationsMap[a];b&&(b.active=!1)},a.MorphBlendMesh.prototype.update=function(b){for(var c=0,d=this.animationsList.length;d>c;c++){var e=this.animationsList[c];if(e.active){var f=e.duration/e.length;e.time+=e.direction*b,e.mirroredLoop?(e.time>e.duration||e.time<0)&&(e.direction*=-1,e.time>e.duration&&(e.time=e.duration,e.directionBackwards=!0),e.time<0&&(e.time=0,e.directionBackwards=!1)):(e.time=e.time%e.duration,e.time<0&&(e.time+=e.duration));var g=e.startFrame+a.Math.clamp(Math.floor(e.time/f),0,e.length-1),h=e.weight;g!==e.currentFrame&&(this.morphTargetInfluences[e.lastFrame]=0,this.morphTargetInfluences[e.currentFrame]=1*h,this.morphTargetInfluences[g]=0,e.lastFrame=e.currentFrame,e.currentFrame=g);var i=e.time%f/f;e.directionBackwards&&(i=1-i),this.morphTargetInfluences[e.currentFrame]=i*h,this.morphTargetInfluences[e.lastFrame]=(1-i)*h}}},a.LensFlarePlugin=function(){function b(a,b){var d=c.createProgram(),e=c.createShader(c.FRAGMENT_SHADER),f=c.createShader(c.VERTEX_SHADER),g="precision "+b+" float;\n";return c.shaderSource(e,g+a.fragmentShader),c.shaderSource(f,g+a.vertexShader),c.compileShader(e),c.compileShader(f),c.attachShader(d,e),c.attachShader(d,f),c.linkProgram(d),d}var c,d,e,f={};this.init=function(g){c=g.context,d=g,e=g.getPrecision(),f.vertices=new Float32Array(16),f.faces=new Uint16Array(6);var h=0;f.vertices[h++]=-1,f.vertices[h++]=-1,f.vertices[h++]=0,f.vertices[h++]=0,f.vertices[h++]=1,f.vertices[h++]=-1,f.vertices[h++]=1,f.vertices[h++]=0,f.vertices[h++]=1,f.vertices[h++]=1,f.vertices[h++]=1,f.vertices[h++]=1,f.vertices[h++]=-1,f.vertices[h++]=1,f.vertices[h++]=0,f.vertices[h++]=1,h=0,f.faces[h++]=0,f.faces[h++]=1,f.faces[h++]=2,f.faces[h++]=0,f.faces[h++]=2,f.faces[h++]=3,f.vertexBuffer=c.createBuffer(),f.elementBuffer=c.createBuffer(),c.bindBuffer(c.ARRAY_BUFFER,f.vertexBuffer),c.bufferData(c.ARRAY_BUFFER,f.vertices,c.STATIC_DRAW),c.bindBuffer(c.ELEMENT_ARRAY_BUFFER,f.elementBuffer),c.bufferData(c.ELEMENT_ARRAY_BUFFER,f.faces,c.STATIC_DRAW),f.tempTexture=c.createTexture(),f.occlusionTexture=c.createTexture(),c.bindTexture(c.TEXTURE_2D,f.tempTexture),c.texImage2D(c.TEXTURE_2D,0,c.RGB,16,16,0,c.RGB,c.UNSIGNED_BYTE,null),c.texParameteri(c.TEXTURE_2D,c.TEXTURE_WRAP_S,c.CLAMP_TO_EDGE),c.texParameteri(c.TEXTURE_2D,c.TEXTURE_WRAP_T,c.CLAMP_TO_EDGE),c.texParameteri(c.TEXTURE_2D,c.TEXTURE_MAG_FILTER,c.NEAREST),c.texParameteri(c.TEXTURE_2D,c.TEXTURE_MIN_FILTER,c.NEAREST),c.bindTexture(c.TEXTURE_2D,f.occlusionTexture),c.texImage2D(c.TEXTURE_2D,0,c.RGBA,16,16,0,c.RGBA,c.UNSIGNED_BYTE,null),c.texParameteri(c.TEXTURE_2D,c.TEXTURE_WRAP_S,c.CLAMP_TO_EDGE),c.texParameteri(c.TEXTURE_2D,c.TEXTURE_WRAP_T,c.CLAMP_TO_EDGE),c.texParameteri(c.TEXTURE_2D,c.TEXTURE_MAG_FILTER,c.NEAREST),c.texParameteri(c.TEXTURE_2D,c.TEXTURE_MIN_FILTER,c.NEAREST),c.getParameter(c.MAX_VERTEX_TEXTURE_IMAGE_UNITS)<=0?(f.hasVertexTexture=!1,f.program=b(a.ShaderFlares.lensFlare,e)):(f.hasVertexTexture=!0,f.program=b(a.ShaderFlares.lensFlareVertexTexture,e)),f.attributes={},f.uniforms={},f.attributes.vertex=c.getAttribLocation(f.program,"position"),f.attributes.uv=c.getAttribLocation(f.program,"uv"),f.uniforms.renderType=c.getUniformLocation(f.program,"renderType"),f.uniforms.map=c.getUniformLocation(f.program,"map"),f.uniforms.occlusionMap=c.getUniformLocation(f.program,"occlusionMap"),f.uniforms.opacity=c.getUniformLocation(f.program,"opacity"),f.uniforms.color=c.getUniformLocation(f.program,"color"),f.uniforms.scale=c.getUniformLocation(f.program,"scale"),f.uniforms.rotation=c.getUniformLocation(f.program,"rotation"),f.uniforms.screenPosition=c.getUniformLocation(f.program,"screenPosition")},this.render=function(b,e,g,h){var i=b.__webglFlares,j=i.length;if(j){var k=new a.Vector3,l=h/g,m=.5*g,n=.5*h,o=16/h,p=new a.Vector2(o*l,o),q=new a.Vector3(1,1,0),r=new a.Vector2(1,1),s=f.uniforms,t=f.attributes;c.useProgram(f.program),c.enableVertexAttribArray(f.attributes.vertex),c.enableVertexAttribArray(f.attributes.uv),c.uniform1i(s.occlusionMap,0),c.uniform1i(s.map,1),c.bindBuffer(c.ARRAY_BUFFER,f.vertexBuffer),c.vertexAttribPointer(t.vertex,2,c.FLOAT,!1,16,0),c.vertexAttribPointer(t.uv,2,c.FLOAT,!1,16,8),c.bindBuffer(c.ELEMENT_ARRAY_BUFFER,f.elementBuffer),c.disable(c.CULL_FACE),c.depthMask(!1);var u,v,w,x,y;for(u=0;j>u;u++)if(o=16/h,p.set(o*l,o),x=i[u],k.set(x.matrixWorld.elements[12],x.matrixWorld.elements[13],x.matrixWorld.elements[14]),k.applyMatrix4(e.matrixWorldInverse),k.applyProjection(e.projectionMatrix),q.copy(k),r.x=q.x*m+m,r.y=q.y*n+n,f.hasVertexTexture||r.x>0&&r.x0&&r.yv;v++)y=x.lensFlares[v],y.opacity>.001&&y.scale>.001&&(q.x=y.x,q.y=y.y,q.z=y.z,o=y.size*y.scale/h,p.x=o*l,p.y=o,c.uniform3f(s.screenPosition,q.x,q.y,q.z),c.uniform2f(s.scale,p.x,p.y),c.uniform1f(s.rotation,y.rotation),c.uniform1f(s.opacity,y.opacity),c.uniform3f(s.color,y.color.r,y.color.g,y.color.b),d.setBlending(y.blending,y.blendEquation,y.blendSrc,y.blendDst),d.setTexture(y.texture,1),c.drawElements(c.TRIANGLES,6,c.UNSIGNED_SHORT,0)); +c.enable(c.CULL_FACE),c.enable(c.DEPTH_TEST),c.depthMask(!0)}}},a.ShadowMapPlugin=function(){function b(b,c){var d=new a.DirectionalLight;d.isVirtual=!0,d.onlyShadow=!0,d.castShadow=!0,d.shadowCameraNear=b.shadowCameraNear,d.shadowCameraFar=b.shadowCameraFar,d.shadowCameraLeft=b.shadowCameraLeft,d.shadowCameraRight=b.shadowCameraRight,d.shadowCameraBottom=b.shadowCameraBottom,d.shadowCameraTop=b.shadowCameraTop,d.shadowCameraVisible=b.shadowCameraVisible,d.shadowDarkness=b.shadowDarkness,d.shadowBias=b.shadowCascadeBias[c],d.shadowMapWidth=b.shadowCascadeWidth[c],d.shadowMapHeight=b.shadowCascadeHeight[c],d.pointsWorld=[],d.pointsFrustum=[];for(var e=d.pointsWorld,f=d.pointsFrustum,g=0;8>g;g++)e[g]=new a.Vector3,f[g]=new a.Vector3;var h=b.shadowCascadeNearZ[c],i=b.shadowCascadeFarZ[c];return f[0].set(-1,-1,h),f[1].set(1,-1,h),f[2].set(-1,1,h),f[3].set(1,1,h),f[4].set(-1,-1,i),f[5].set(1,-1,i),f[6].set(-1,1,i),f[7].set(1,1,i),d}function c(a,b){var c=a.shadowCascadeArray[b];c.position.copy(a.position),c.target.position.copy(a.target.position),c.lookAt(c.target),c.shadowCameraVisible=a.shadowCameraVisible,c.shadowDarkness=a.shadowDarkness,c.shadowBias=a.shadowCascadeBias[b];var d=a.shadowCascadeNearZ[b],e=a.shadowCascadeFarZ[b],f=c.pointsFrustum;f[0].z=d,f[1].z=d,f[2].z=d,f[3].z=d,f[4].z=e,f[5].z=e,f[6].z=e,f[7].z=e}function d(b,c){var d=c.shadowCamera,e=c.pointsFrustum,f=c.pointsWorld;n.set(1/0,1/0,1/0),o.set(-1/0,-1/0,-1/0);for(var g=0;8>g;g++){var h=f[g];h.copy(e[g]),a.ShadowMapPlugin.__projector.unprojectVector(h,b),h.applyMatrix4(d.matrixWorldInverse),h.xo.x&&(o.x=h.x),h.yo.y&&(o.y=h.y),h.zo.z&&(o.z=h.z)}d.left=n.x,d.right=o.x,d.top=o.y,d.bottom=n.y,d.updateProjectionMatrix()}function e(b){return b.material instanceof a.MeshFaceMaterial?b.material.materials[0]:b.material}var f,g,h,i,j,k,l=new a.Frustum,m=new a.Matrix4,n=new a.Vector3,o=new a.Vector3,p=new a.Vector3;this.init=function(b){f=b.context,g=b;var c=a.ShaderLib.depthRGBA,d=a.UniformsUtils.clone(c.uniforms);h=new a.ShaderMaterial({fragmentShader:c.fragmentShader,vertexShader:c.vertexShader,uniforms:d}),i=new a.ShaderMaterial({fragmentShader:c.fragmentShader,vertexShader:c.vertexShader,uniforms:d,morphTargets:!0}),j=new a.ShaderMaterial({fragmentShader:c.fragmentShader,vertexShader:c.vertexShader,uniforms:d,skinning:!0}),k=new a.ShaderMaterial({fragmentShader:c.fragmentShader,vertexShader:c.vertexShader,uniforms:d,morphTargets:!0,skinning:!0}),h._shadowPass=!0,i._shadowPass=!0,j._shadowPass=!0,k._shadowPass=!0},this.render=function(a,b){g.shadowMapEnabled&&g.shadowMapAutoUpdate&&this.update(a,b)},this.update=function(n,o){var q,r,s,t,u,v,w,x,y,z,A,B,C,D,E=[],F=0,G=null;for(f.clearColor(1,1,1,1),f.disable(f.BLEND),f.enable(f.CULL_FACE),f.frontFace(f.CCW),f.cullFace(g.shadowMapCullFace===a.CullFaceFront?f.FRONT:f.BACK),g.setDepthTest(!0),q=0,r=n.__lights.length;r>q;q++)if(C=n.__lights[q],C.castShadow)if(C instanceof a.DirectionalLight&&C.shadowCascade)for(u=0;uq;q++){if(C=E[q],!C.shadowMap){var J=a.LinearFilter;g.shadowMapType===a.PCFSoftShadowMap&&(J=a.NearestFilter);var K={minFilter:J,magFilter:J,format:a.RGBAFormat};C.shadowMap=new a.WebGLRenderTarget(C.shadowMapWidth,C.shadowMapHeight,K),C.shadowMapSize=new a.Vector2(C.shadowMapWidth,C.shadowMapHeight),C.shadowMatrix=new a.Matrix4}if(!C.shadowCamera){if(C instanceof a.SpotLight)C.shadowCamera=new a.PerspectiveCamera(C.shadowCameraFov,C.shadowMapWidth/C.shadowMapHeight,C.shadowCameraNear,C.shadowCameraFar);else{if(!(C instanceof a.DirectionalLight)){console.error("Unsupported light type for shadow");continue}C.shadowCamera=new a.OrthographicCamera(C.shadowCameraLeft,C.shadowCameraRight,C.shadowCameraTop,C.shadowCameraBottom,C.shadowCameraNear,C.shadowCameraFar)}n.add(C.shadowCamera),n.autoUpdate===!0&&n.updateMatrixWorld()}for(C.shadowCameraVisible&&!C.cameraHelper&&(C.cameraHelper=new a.CameraHelper(C.shadowCamera),C.shadowCamera.add(C.cameraHelper)),C.isVirtual&&H.originalCamera==o&&d(o,C),v=C.shadowMap,w=C.shadowMatrix,x=C.shadowCamera,x.position.setFromMatrixPosition(C.matrixWorld),p.setFromMatrixPosition(C.target.matrixWorld),x.lookAt(p),x.updateMatrixWorld(),x.matrixWorldInverse.getInverse(x.matrixWorld),C.cameraHelper&&(C.cameraHelper.visible=C.shadowCameraVisible),C.shadowCameraVisible&&C.cameraHelper.update(),w.set(.5,0,0,.5,0,.5,0,.5,0,0,.5,.5,0,0,0,1),w.multiply(x.projectionMatrix),w.multiply(x.matrixWorldInverse),m.multiplyMatrices(x.projectionMatrix,x.matrixWorldInverse),l.setFromMatrix(m),g.setRenderTarget(v),g.clear(),D=n.__webglObjects,s=0,t=D.length;t>s;s++)A=D[s],B=A.object,A.render=!1,B.visible&&B.castShadow&&((B instanceof a.Mesh||B instanceof a.ParticleSystem)&&B.frustumCulled&&!l.intersectsObject(B)||(B._modelViewMatrix.multiplyMatrices(x.matrixWorldInverse,B.matrixWorld),A.render=!0));var L,M,N;for(s=0,t=D.length;t>s;s++)A=D[s],A.render&&(B=A.object,y=A.buffer,L=e(B),M=void 0!==B.geometry.morphTargets&&B.geometry.morphTargets.length>0&&L.morphTargets,N=B instanceof a.SkinnedMesh&&L.skinning,z=B.customDepthMaterial?B.customDepthMaterial:N?M?k:j:M?i:h,y instanceof a.BufferGeometry?g.renderBufferDirect(x,n.__lights,G,z,y,B):g.renderBuffer(x,n.__lights,G,z,y,B));for(D=n.__webglObjectsImmediate,s=0,t=D.length;t>s;s++)A=D[s],B=A.object,B.visible&&B.castShadow&&(B._modelViewMatrix.multiplyMatrices(x.matrixWorldInverse,B.matrixWorld),g.renderImmediateObject(x,n.__lights,G,h,B))}var O=g.getClearColor(),P=g.getClearAlpha();f.clearColor(O.r,O.g,O.b,P),f.enable(f.BLEND),g.shadowMapCullFace===a.CullFaceFront&&f.cullFace(f.BACK)}},a.ShadowMapPlugin.__projector=new a.Projector,a.SpritePlugin=function(){function b(){var a=d.createProgram(),b=d.createShader(d.VERTEX_SHADER),c=d.createShader(d.FRAGMENT_SHADER);return d.shaderSource(b,["precision "+e.getPrecision()+" float;","uniform mat4 modelViewMatrix;","uniform mat4 projectionMatrix;","uniform float rotation;","uniform vec2 scale;","uniform vec2 uvOffset;","uniform vec2 uvScale;","attribute vec2 position;","attribute vec2 uv;","varying vec2 vUV;","void main() {","vUV = uvOffset + uv * uvScale;","vec2 alignedPosition = position * scale;","vec2 rotatedPosition;","rotatedPosition.x = cos( rotation ) * alignedPosition.x - sin( rotation ) * alignedPosition.y;","rotatedPosition.y = sin( rotation ) * alignedPosition.x + cos( rotation ) * alignedPosition.y;","vec4 finalPosition;","finalPosition = modelViewMatrix * vec4( 0.0, 0.0, 0.0, 1.0 );","finalPosition.xy += rotatedPosition;","finalPosition = projectionMatrix * finalPosition;","gl_Position = finalPosition;","}"].join("\n")),d.shaderSource(c,["precision "+e.getPrecision()+" float;","uniform vec3 color;","uniform sampler2D map;","uniform float opacity;","uniform int fogType;","uniform vec3 fogColor;","uniform float fogDensity;","uniform float fogNear;","uniform float fogFar;","uniform float alphaTest;","varying vec2 vUV;","void main() {","vec4 texture = texture2D( map, vUV );","if ( texture.a < alphaTest ) discard;","gl_FragColor = vec4( color * texture.xyz, texture.a * opacity );","if ( fogType > 0 ) {","float depth = gl_FragCoord.z / gl_FragCoord.w;","float fogFactor = 0.0;","if ( fogType == 1 ) {","fogFactor = smoothstep( fogNear, fogFar, depth );","} else {","const float LOG2 = 1.442695;","float fogFactor = exp2( - fogDensity * fogDensity * depth * depth * LOG2 );","fogFactor = 1.0 - clamp( fogFactor, 0.0, 1.0 );","}","gl_FragColor = mix( gl_FragColor, vec4( fogColor, gl_FragColor.w ), fogFactor );","}","}"].join("\n")),d.compileShader(b),d.compileShader(c),d.attachShader(a,b),d.attachShader(a,c),d.linkProgram(a),a}function c(a,b){return a.z!==b.z?b.z-a.z:b.id-a.id}var d,e,f,g,h,i,j,k,l,m;this.init=function(c){d=c.context,e=c,g=new Float32Array([-.5,-.5,0,0,.5,-.5,1,0,.5,.5,1,1,-.5,.5,0,1]),h=new Uint16Array([0,1,2,0,2,3]),i=d.createBuffer(),j=d.createBuffer(),d.bindBuffer(d.ARRAY_BUFFER,i),d.bufferData(d.ARRAY_BUFFER,g,d.STATIC_DRAW),d.bindBuffer(d.ELEMENT_ARRAY_BUFFER,j),d.bufferData(d.ELEMENT_ARRAY_BUFFER,h,d.STATIC_DRAW),k=b(),l={position:d.getAttribLocation(k,"position"),uv:d.getAttribLocation(k,"uv")},m={uvOffset:d.getUniformLocation(k,"uvOffset"),uvScale:d.getUniformLocation(k,"uvScale"),rotation:d.getUniformLocation(k,"rotation"),scale:d.getUniformLocation(k,"scale"),color:d.getUniformLocation(k,"color"),map:d.getUniformLocation(k,"map"),opacity:d.getUniformLocation(k,"opacity"),modelViewMatrix:d.getUniformLocation(k,"modelViewMatrix"),projectionMatrix:d.getUniformLocation(k,"projectionMatrix"),fogType:d.getUniformLocation(k,"fogType"),fogDensity:d.getUniformLocation(k,"fogDensity"),fogNear:d.getUniformLocation(k,"fogNear"),fogFar:d.getUniformLocation(k,"fogFar"),fogColor:d.getUniformLocation(k,"fogColor"),alphaTest:d.getUniformLocation(k,"alphaTest")};var n=document.createElement("canvas");n.width=8,n.height=8;var o=n.getContext("2d");o.fillStyle="#ffffff",o.fillRect(0,0,n.width,n.height),f=new a.Texture(n),f.needsUpdate=!0},this.render=function(b,g){var h=b.__webglSprites,n=h.length;if(n){d.useProgram(k),d.enableVertexAttribArray(l.position),d.enableVertexAttribArray(l.uv),d.disable(d.CULL_FACE),d.enable(d.BLEND),d.bindBuffer(d.ARRAY_BUFFER,i),d.vertexAttribPointer(l.position,2,d.FLOAT,!1,16,0),d.vertexAttribPointer(l.uv,2,d.FLOAT,!1,16,8),d.bindBuffer(d.ELEMENT_ARRAY_BUFFER,j),d.uniformMatrix4fv(m.projectionMatrix,!1,g.projectionMatrix.elements),d.activeTexture(d.TEXTURE0),d.uniform1i(m.map,0);var o=0,p=0,q=b.fog;q?(d.uniform3f(m.fogColor,q.color.r,q.color.g,q.color.b),q instanceof a.Fog?(d.uniform1f(m.fogNear,q.near),d.uniform1f(m.fogFar,q.far),d.uniform1i(m.fogType,1),o=1,p=1):q instanceof a.FogExp2&&(d.uniform1f(m.fogDensity,q.density),d.uniform1i(m.fogType,2),o=2,p=2)):(d.uniform1i(m.fogType,0),o=0,p=0);var r,s,t,u,v=[];for(r=0;n>r;r++)s=h[r],t=s.material,s.visible!==!1&&(s._modelViewMatrix.multiplyMatrices(g.matrixWorldInverse,s.matrixWorld),s.z=-s._modelViewMatrix.elements[14]);for(h.sort(c),r=0;n>r;r++)s=h[r],s.visible!==!1&&(t=s.material,d.uniform1f(m.alphaTest,t.alphaTest),d.uniformMatrix4fv(m.modelViewMatrix,!1,s._modelViewMatrix.elements),v[0]=s.scale.x,v[1]=s.scale.y,u=b.fog&&t.fog?p:0,o!==u&&(d.uniform1i(m.fogType,u),o=u),null!==t.map?(d.uniform2f(m.uvOffset,t.map.offset.x,t.map.offset.y),d.uniform2f(m.uvScale,t.map.repeat.x,t.map.repeat.y)):(d.uniform2f(m.uvOffset,0,0),d.uniform2f(m.uvScale,1,1)),d.uniform1f(m.opacity,t.opacity),d.uniform3f(m.color,t.color.r,t.color.g,t.color.b),d.uniform1f(m.rotation,t.rotation),d.uniform2fv(m.scale,v),e.setBlending(t.blending,t.blendEquation,t.blendSrc,t.blendDst),e.setDepthTest(t.depthTest),e.setDepthWrite(t.depthWrite),t.map&&t.map.image&&t.map.image.width?e.setTexture(t.map,0):e.setTexture(f,0),d.drawElements(d.TRIANGLES,6,d.UNSIGNED_SHORT,0));d.enable(d.CULL_FACE)}}},a.DepthPassPlugin=function(){function b(b){return b.material instanceof a.MeshFaceMaterial?b.material.materials[0]:b.material}this.enabled=!1,this.renderTarget=null;var c,d,e,f,g,h,i=new a.Frustum,j=new a.Matrix4;this.init=function(b){c=b.context,d=b;var i=a.ShaderLib.depthRGBA,j=a.UniformsUtils.clone(i.uniforms);e=new a.ShaderMaterial({fragmentShader:i.fragmentShader,vertexShader:i.vertexShader,uniforms:j}),f=new a.ShaderMaterial({fragmentShader:i.fragmentShader,vertexShader:i.vertexShader,uniforms:j,morphTargets:!0}),g=new a.ShaderMaterial({fragmentShader:i.fragmentShader,vertexShader:i.vertexShader,uniforms:j,skinning:!0}),h=new a.ShaderMaterial({fragmentShader:i.fragmentShader,vertexShader:i.vertexShader,uniforms:j,morphTargets:!0,skinning:!0}),e._shadowPass=!0,f._shadowPass=!0,g._shadowPass=!0,h._shadowPass=!0},this.render=function(a,b){this.enabled&&this.update(a,b)},this.update=function(k,l){var m,n,o,p,q,r,s,t=null;for(c.clearColor(1,1,1,1),c.disable(c.BLEND),d.setDepthTest(!0),k.autoUpdate===!0&&k.updateMatrixWorld(),l.matrixWorldInverse.getInverse(l.matrixWorld),j.multiplyMatrices(l.projectionMatrix,l.matrixWorldInverse),i.setFromMatrix(j),d.setRenderTarget(this.renderTarget),d.clear(),s=k.__webglObjects,m=0,n=s.length;n>m;m++)q=s[m],r=q.object,q.render=!1,r.visible&&((r instanceof a.Mesh||r instanceof a.ParticleSystem)&&r.frustumCulled&&!i.intersectsObject(r)||(r._modelViewMatrix.multiplyMatrices(l.matrixWorldInverse,r.matrixWorld),q.render=!0));var u,v,w;for(m=0,n=s.length;n>m;m++)if(q=s[m],q.render){if(r=q.object,o=q.buffer,r instanceof a.ParticleSystem&&!r.customDepthMaterial)continue;u=b(r),u&&d.setMaterialFaces(r.material),v=r.geometry.morphTargets.length>0&&u.morphTargets,w=r instanceof a.SkinnedMesh&&u.skinning,p=r.customDepthMaterial?r.customDepthMaterial:w?v?h:g:v?f:e,o instanceof a.BufferGeometry?d.renderBufferDirect(l,k.__lights,t,p,o,r):d.renderBuffer(l,k.__lights,t,p,o,r)}for(s=k.__webglObjectsImmediate,m=0,n=s.length;n>m;m++)q=s[m],r=q.object,r.visible&&(r._modelViewMatrix.multiplyMatrices(l.matrixWorldInverse,r.matrixWorld),d.renderImmediateObject(l,k.__lights,t,e,r));var x=d.getClearColor(),y=d.getClearAlpha();c.clearColor(x.r,x.g,x.b,y),c.enable(c.BLEND)}},a.ShaderFlares={lensFlareVertexTexture:{vertexShader:["uniform lowp int renderType;","uniform vec3 screenPosition;","uniform vec2 scale;","uniform float rotation;","uniform sampler2D occlusionMap;","attribute vec2 position;","attribute vec2 uv;","varying vec2 vUV;","varying float vVisibility;","void main() {","vUV = uv;","vec2 pos = position;","if( renderType == 2 ) {","vec4 visibility = texture2D( occlusionMap, vec2( 0.1, 0.1 ) );","visibility += texture2D( occlusionMap, vec2( 0.5, 0.1 ) );","visibility += texture2D( occlusionMap, vec2( 0.9, 0.1 ) );","visibility += texture2D( occlusionMap, vec2( 0.9, 0.5 ) );","visibility += texture2D( occlusionMap, vec2( 0.9, 0.9 ) );","visibility += texture2D( occlusionMap, vec2( 0.5, 0.9 ) );","visibility += texture2D( occlusionMap, vec2( 0.1, 0.9 ) );","visibility += texture2D( occlusionMap, vec2( 0.1, 0.5 ) );","visibility += texture2D( occlusionMap, vec2( 0.5, 0.5 ) );","vVisibility = visibility.r / 9.0;","vVisibility *= 1.0 - visibility.g / 9.0;","vVisibility *= visibility.b / 9.0;","vVisibility *= 1.0 - visibility.a / 9.0;","pos.x = cos( rotation ) * position.x - sin( rotation ) * position.y;","pos.y = sin( rotation ) * position.x + cos( rotation ) * position.y;","}","gl_Position = vec4( ( pos * scale + screenPosition.xy ).xy, screenPosition.z, 1.0 );","}"].join("\n"),fragmentShader:["uniform lowp int renderType;","uniform sampler2D map;","uniform float opacity;","uniform vec3 color;","varying vec2 vUV;","varying float vVisibility;","void main() {","if( renderType == 0 ) {","gl_FragColor = vec4( 1.0, 0.0, 1.0, 0.0 );","} else if( renderType == 1 ) {","gl_FragColor = texture2D( map, vUV );","} else {","vec4 texture = texture2D( map, vUV );","texture.a *= opacity * vVisibility;","gl_FragColor = texture;","gl_FragColor.rgb *= color;","}","}"].join("\n")},lensFlare:{vertexShader:["uniform lowp int renderType;","uniform vec3 screenPosition;","uniform vec2 scale;","uniform float rotation;","attribute vec2 position;","attribute vec2 uv;","varying vec2 vUV;","void main() {","vUV = uv;","vec2 pos = position;","if( renderType == 2 ) {","pos.x = cos( rotation ) * position.x - sin( rotation ) * position.y;","pos.y = sin( rotation ) * position.x + cos( rotation ) * position.y;","}","gl_Position = vec4( ( pos * scale + screenPosition.xy ).xy, screenPosition.z, 1.0 );","}"].join("\n"),fragmentShader:["precision mediump float;","uniform lowp int renderType;","uniform sampler2D map;","uniform sampler2D occlusionMap;","uniform float opacity;","uniform vec3 color;","varying vec2 vUV;","void main() {","if( renderType == 0 ) {","gl_FragColor = vec4( texture2D( map, vUV ).rgb, 0.0 );","} else if( renderType == 1 ) {","gl_FragColor = texture2D( map, vUV );","} else {","float visibility = texture2D( occlusionMap, vec2( 0.5, 0.1 ) ).a;","visibility += texture2D( occlusionMap, vec2( 0.9, 0.5 ) ).a;","visibility += texture2D( occlusionMap, vec2( 0.5, 0.9 ) ).a;","visibility += texture2D( occlusionMap, vec2( 0.1, 0.5 ) ).a;","visibility = ( 1.0 - visibility / 4.0 );","vec4 texture = texture2D( map, vUV );","texture.a *= opacity * visibility;","gl_FragColor = texture;","gl_FragColor.rgb *= color;","}","}"].join("\n")}}}(),BrainBrowser.SurfaceViewer.modules.annotations=function(a){"use strict";function b(b){b=b||{};var c=b.model_name||null;return!c&&a.model.children[0]&&(c=a.model.children[0].userData.model_name),c}var c=BrainBrowser.createTreeStore(),d=.5,e=65280,f=16711680;a.annotations={add:function(e,g,h){h=h||{};var i,j,k=b(h);k&&(j=a.getVertex(e,{model_name:h.model_name}),i={data:g,model_name:k,vertex:e,position:j,marker:a.drawDot(j.x,j.y,j.z,d,f)},i.marker.userData.annotation_info=i,c.set(k,e,i),h.activate!==!1&&a.annotations.activate(e,h))},get:function(d,e){e=e||{};var f,g=b(e);return g?(f=c.get(g,d),e.activate!==!1&&a.annotations.activate(d,e),f):null},remove:function(d,e){e=e||{};var f,g=b(e);return g?(f=c.remove(g,d),a.model.remove(f.marker),f.marker=null,a.updated=!0,f):null},reset:function(){a.annotations.forEach(function(b){a.annotations.remove(b.vertex)})},activate:function(b,c){c=c||{};var d=a.annotations.get(b,{model_name:c.model_name,activate:!1});d&&(a.annotations.forEach(function(a){a.marker.material.color.setHex(a===d?e:f)}),a.updated=!0)},forEach:function(a){c.forEach(2,a)},setMarkerOnColor:function(a){e=a},setMarkerOffColor:function(a){f=a},setMarkerRadius:function(a){d=a}}},BrainBrowser.SurfaceViewer.modules.color=function(a){"use strict";function b(a,b){var c,d,e,f,g,h,i,j,k,l,m,n,o,p;for(i=0,k=b.length;k>i;i++){for(d=b[i],l=d.getObjectByName("__WIREFRAME__"),p=!!l,p&&(m=l.geometry.attributes.color.array),c=d.geometry,e=d.userData.original_data.indices,f=c.attributes.color,g=f.array,h=0,j=e.length;j>h;h+=3)n=4*h,o=2*n,g[n]=a[4*e[h]],g[n+1]=a[4*e[h]+1],g[n+2]=a[4*e[h]+2],g[n+3]=1,g[n+4]=a[4*e[h+1]],g[n+5]=a[4*e[h+1]+1],g[n+6]=a[4*e[h+1]+2],g[n+7]=1,g[n+8]=a[4*e[h+2]],g[n+9]=a[4*e[h+2]+1],g[n+10]=a[4*e[h+2]+2],g[n+11]=1,p&&(m[o]=g[n],m[o+1]=g[n+1],m[o+2]=g[n+2],m[o+3]=g[n+3],m[o+4]=g[n+4],m[o+5]=g[n+5],m[o+6]=g[n+6],m[o+7]=g[n+7],m[o+8]=g[n+4],m[o+9]=g[n+5],m[o+10]=g[n+6],m[o+11]=g[n+7],m[o+12]=g[n+8],m[o+13]=g[n+9],m[o+14]=g[n+10],m[o+15]=g[n+11],m[o+16]=g[n+8],m[o+17]=g[n+9],m[o+18]=g[n+10],m[o+19]=g[n+11],m[o+20]=g[n],m[o+21]=g[n+1],m[o+22]=g[n+2],m[o+23]=g[n+3]);f.needsUpdate=!0,p&&(l.geometry.attributes.color.needsUpdate=!0)}}function c(b,c){var d,e,f,g,h,i,j,k=a.model_data.get(c),l=[],m=[];for(b.forEach(function(b){l.push(a.color_map.mapColors(b.values,{min:b.range_min,max:b.range_max,default_colors:k.colors})),m.push(b.alpha)}),d=new Float32Array(l[0].length),e=0,i=l[0].length/4;i>e;e++)for(f=0,h=l.length;h>f;f++)g=4*e,j=m[f],d[g]+=l[f][g]*j,d[g+1]+=l[f][g+1]*j,d[g+2]+=l[f][g+2]*j,d[g+3]+=j;return d}var d=null;a.updateColors=function(e){function f(c){var d,e=a.model.getObjectByName(k,!0);d=e?[e]:a.model.children.filter(function(a){return!!a.userData.original_data}),b(c,d),i&&i(),a.triggerEvent("updatecolors",{model_data:l,intensity_data:g,colors:c,blend:h}),h&&a.triggerEvent("blendcolors",{model_data:l,intensity_data:g,colors:c})}e=e||{};var g,h,i=e.complete,j=e.model_name,k=e.shape_name||j+"_1",l=a.model_data.get(j);l.intensity_data.length>1?(g=l.intensity_data,h=!0):(g=l.intensity_data[0],h=!1),clearTimeout(d),d=setTimeout(function(){f(h?c(g,e.model_name):a.color_map.mapColors(g.values,{min:g.range_min,max:g.range_max,default_colors:a.model_data.get(e.model_name).colors}))},0)},a.setIntensity=function(){var b,c,d,e,f,g=Array.prototype.slice.call(arguments);b=BrainBrowser.utils.isNumeric(g[0])?a.model_data.getDefaultIntensityData():g.shift(),f=b.model_data,c=g[0],d=g[1],e=g[2]||{},b&&c>=0&&c1?a.blend(d.complete):a.updateColors({model_name:h,complete:d.complete}),a.triggerEvent("loadintensitydata",{model_data:i,intensity_data:b})})}function d(b){a.color_map=b,a.triggerEvent("loadcolormap",{color_map:b}),a.model_data.forEach(function(b){b.intensity_data[0]&&a.updateColors({model_name:b.name})})}function e(a,b,c,d){var e,f=b+"_model";if(!j.worker_urls[f])throw e="error in SurfaceViewer configuration.\nModel worker URL for "+b+" not defined.\nUse 'BrainBrowser.config.set(\"model_types."+b+".worker\", ...)' to set it.",BrainBrowser.events.triggerEvent("error",{message:e}),new Error(e);var g,h=new Worker(j.worker_urls[f]);h.addEventListener("message",function(a){var f=a.data;if(f.error)throw e="error parsing model.\n"+f.error_message+"\nFile type: "+b+"\nOptions: "+JSON.stringify(c),BrainBrowser.events.triggerEvent("error",{message:e}),new Error(e);f.colors=f.colors||[.7,.7,.7,1],g=new Worker(j.worker_urls.deindex),g.addEventListener("message",function(a){d(a.data)}),g.postMessage(f),h.terminate()}),h.postMessage({data:a,options:c})}function f(b,c,d){d=d||{};var e=d.complete,f=g(b,c,d);a.triggerEvent("displaymodel",{model:a.model,model_data:b,new_shapes:f}),e&&e()}function g(b,c,d){var e,f,g,i,j=a.model,k=b.shapes,l="line"===b.type,m=d.render_depth,n=d.pick_ignore,o=[];if(b.name=b.name||c,a.model_data.add(b.name,b),k){for(g=0,i=k.length;i>g;g++)f=b.shapes[g],e=h(f,l),e.name=f.name||c+"_"+(g+1),e.userData.model_name=b.name,e.userData.original_data={vertices:b.vertices,indices:f.indices,normals:b.normals,colors:b.colors},e.userData.pick_ignore=n,m&&(e.renderDepth=m),o.push(e),j.add(e);b.split&&(j.children[0].name="left",j.children[1].name="right")}return o}function h(a,b){var c,d,e=a.unindexed,f=a.centroid,g=e.position,h=e.normal||[],i=e.color||[],j=new k.BufferGeometry;return j.dynamic=!0,j.attributes.position={itemSize:3,array:new Float32Array(g),numItems:g.length},h.length>0?j.attributes.normal={itemSize:3,array:new Float32Array(h)}:j.computeVertexNormals(),i.length>0&&(j.attributes.color={itemSize:4,array:new Float32Array(i)}),b?(c=new k.LineBasicMaterial({vertexColors:k.VertexColors}),d=new k.Line(j,c,k.LinePieces)):(c=new k.MeshPhongMaterial({color:16777215,ambient:16777215,specular:1052688,shininess:150,vertexColors:k.VertexColors}),d=new k.Mesh(j,c),d.has_wireframe=!0),d.centroid=f,d.position.set(f.x,f.y,f.z),d}function i(a){a=a||{};var b=a.format||"mniobj",c=BrainBrowser.config.get("model_types."+b);return c&&c.binary&&(a.result_type=a.result_type||"arraybuffer"),a}var j=BrainBrowser.SurfaceViewer,k=j.THREE,l=BrainBrowser.loader,m={};a.model_data={add:function(a,b){m[a]=b,b.intensity_data=[]},get:function(a){return a=a||Object.keys(m)[0],m[a]||null},getDefaultIntensityData:function(a){var b,c,d,e;if(a)b=this.get(a),c=b?b.intensity_data[0]:null;else for(b=Object.keys(m).map(function(a){return m[a]}),d=0,e=b.length;e>d&&!(c=b[d].intensity_data[0]);d++);return c||null},count:function(){return Object.keys(m).length},clear:function(){m={}},forEach:function(a){Object.keys(m).forEach(function(b){a(m[b],b)})}},a.loadModelFromURL=function(a,c){c=i(c),l.loadFromURL(a,b,c)},a.loadModelFromFile=function(a,c){c=i(c),l.loadFromFile(a,b,c)},a.loadIntensityDataFromURL=function(a,b){b=i(b),l.loadFromURL(a,c,b)},a.loadIntensityDataFromFile=function(a,b){b=i(b),l.loadFromFile(a,c,b)},a.loadColorMapFromURL=function(a,b){l.loadColorMapFromURL(a,d,b)},a.loadColorMapFromFile=function(a,b){l.loadColorMapFromFile(a,d,b)},a.clearScreen=function(){for(var b=a.model.children;b.length>0;)a.model.remove(b[0]);a.model_data.clear(),a.resetView(),a.triggerEvent("clearscreen")}},BrainBrowser.SurfaceViewer.modules.rendering=function(a){"use strict";function b(f){var g,m,n=a.model,o=i.position,p=j/a.zoom;window.requestAnimationFrame(b),d=c||f,c=f,g=c-d,m=15e-5*g,a.autorotate.x&&(n.rotation.x+=m,a.updated=!0),a.autorotate.y&&(n.rotation.y+=m,a.updated=!0),a.autorotate.z&&(n.rotation.z+=m,a.updated=!0),e!==a.zoom&&(e=a.zoom,a.updated=!0,a.triggerEvent("zoom",{zoom:a.zoom})),a.updated&&(p>i.near&&p<.9*i.far&&(o.z=p,k.position.z=p),l.render(h,i),a.triggerEvent("draw",{renderer:l,scene:h,camera:i}),a.updated=!1)}var c,d,e,f=BrainBrowser.SurfaceViewer.THREE,g=new f.WebGLRenderer({preserveDrawingBuffer:!0}),h=new f.Scene,i=new f.PerspectiveCamera(30,a.dom_element.offsetWidth/a.dom_element.offsetHeight,1,3e3),j=500,k=new f.PointLight(16777215),l=g,m={},n=g.domElement;a.model=new f.Object3D,h.add(a.model),a.render=function(){var c=a.dom_element;g.setClearColor(0),c.appendChild(g.domElement),i.position.z=j,k.position.set(0,0,j),h.add(k),a.updateViewport(),b()},a.updateViewport=function(){var b=a.dom_element;l.setSize(b.offsetWidth,b.offsetHeight),i.aspect=b.offsetWidth/b.offsetHeight,i.updateProjectionMatrix(),a.updated=!0},a.canvasDataURL=function(){return g.domElement.toDataURL()},a.addEffect=function(b){var c;BrainBrowser.utils.isFunction(f[b])&&(c=new f[b](g),c.setSize(a.dom_element.offsetWidth,a.dom_element.offsetHeight),m[b]=c)},a.setEffect=function(b){l=m[b]?m[b]:g,l.setSize(a.dom_element.offsetWidth,a.dom_element.offsetHeight),l.render(h,i),a.updated=!0},a.setCameraPosition=function(b,c,d){i.position.set(b,c,d),k.position.set(b,c,d),a.updated=!0},a.resetView=function(){var b,c,d,e,g=a.model,h=new f.Matrix4;for(h.getInverse(g.matrix),g.applyMatrix(h),i.position.set(0,0,j),k.position.set(0,0,j),a.zoom=1,d=0,e=a.model.children.length;e>d;d++)b=g.children[d],b.centroid?b.position.set(b.centroid.x,b.centroid.y,b.centroid.z):b.position.set(0,0,0),b.rotation.set(0,0,0),c=b.getObjectByName("__WIREFRAME__");a.updated=!0},a.setClearColor=function(b){g.setClearColor(b,1),a.updated=!0},a.drawDot=function(b,c,d,e,g){e=e||2,e=e>=0?e:0,g=g>=0?g:16711680;var i=new f.SphereGeometry(e),j=new f.MeshBasicMaterial({color:g}),k=new f.Mesh(i,j);return k.position.set(b,c,d),a.model?a.model.add(k):h.add(k),a.updated=!0,k},a.pick=function(b,c){b=void 0===b?a.mouse.x:b,c=void 0===c?a.mouse.y:c,b=b/a.dom_element.offsetWidth*2-1,c=-c/a.dom_element.offsetHeight*2+1;var d,e,g,h,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y=a.model,z=new f.Projector,A=new f.Raycaster,B=new f.Vector3(b,c,i.near),C=null,D=new f.Matrix4;for(z.unprojectVector(B,i),A.set(i.position,B.sub(i.position).normalize()),d=A.intersectObject(y,!0),s=0;ss;s++)p=o[j[s]],q=new f.Vector3(n[3*p],n[3*p+1],n[3*p+2]),r=h.distanceTo(new f.Vector3(q.x-v,q.y-w,q.z-x)),m>r&&(k=p,l=q,m=r);e={index:k,point:l,object:g}}else e=null;return e},function(){function b(b,c){var d,e,g=new f.Matrix4,h=b.x,l=b.y;if(null!==p)if(d=h-p,e=l-q,"rotate"===o){g.getInverse(m.matrix);var n=new f.Vector3(1,0,0).applyMatrix4(g).normalize();m.rotateOnAxis(n,e/150),g.getInverse(m.matrix),n=new f.Vector3(0,1,0).applyMatrix4(g).normalize(),m.rotateOnAxis(n,d/150)}else c=c||1,c*=i.position.z/j,i.position.x-=d*c*.25,k.position.x-=d*c*.25,i.position.y+=e*c*.25,k.position.y+=e*c*.25;p=h,q=l,a.updated=!0}function c(){var b,c=a.touches[0].x-a.touches[1].x,d=a.touches[0].y-a.touches[1].y,e=Math.sqrt(c*c+d*d);null!==r&&(b=e-r,a.zoom*=1+.01*b),r=e}function d(c){c.preventDefault(),b(a.mouse,1.1)}function e(d){d.preventDefault(),"zoom"===o?c():b(a.touches[0],2)}function g(){document.removeEventListener("mousemove",d,!1),document.removeEventListener("mouseup",g,!1),p=null,q=null}function h(){document.removeEventListener("touchmove",e,!1),document.removeEventListener("touchend",h,!1),p=null,q=null,r=null}function l(b){var c=Math.max(-1,Math.min(1,b.wheelDelta||-b.detail));b.preventDefault(),a.zoom*=1+.05*c}var m=a.model,o="rotate",p=null,q=null,r=null;n.addEventListener("mousedown",function(a){document.addEventListener("mousemove",d,!1),document.addEventListener("mouseup",g,!1),o=1===a.which?"rotate":"translate"},!1),n.addEventListener("touchstart",function(a){document.addEventListener("touchmove",e,!1),document.addEventListener("touchend",h,!1),o=1===a.touches.length?"rotate":2===a.touches.length?"zoom":"translate"},!1),n.addEventListener("mousewheel",l,!1),n.addEventListener("DOMMouseScroll",l,!1),n.addEventListener("contextmenu",function(a){a.preventDefault()},!1)}()},BrainBrowser.SurfaceViewer.modules.views=function(a){"use strict";function b(a,d){f>g?c(a,d):setTimeout(function(){b(a,d)},0)}function c(a,b){var c=new Worker(BrainBrowser.SurfaceViewer.worker_urls.wireframe),d=a.geometry.attributes;c.addEventListener("message",function(d){var f,h,i=d.data.positions,j=d.data.colors,k=new e.BufferGeometry;k.attributes.position={itemSize:3,array:i,numItems:i.length},k.attributes.color={itemSize:4,array:j},k.attributes.color.needsUpdate=!0,f=new e.LineBasicMaterial({vertexColors:e.VertexColors}),h=new e.Line(k,f,e.LinePieces),h.name="__WIREFRAME__",h.visible=!1,a.wireframe_active=!1,a.add(h),g--,b(h),c.terminate()}),c.postMessage({positions:d.position.array,colors:d.color.array}),g++}function d(b,c,d){b.visible=!d,c.visible=d,b.wireframe_active=d,a.updated=!0}var e=BrainBrowser.SurfaceViewer.THREE,f=20,g=0,h={medialView:function(b){var c=a.model;b.split&&(c.getObjectByName("left").position.x-=100,c.getObjectByName("left").rotation.z-=Math.PI/2,c.getObjectByName("right").position.x+=100,c.getObjectByName("right").rotation.z+=Math.PI/2,c.rotation.x-=Math.PI/2)},lateralView:function(b){var c,d,e=a.model;b.split&&(c=e.getObjectByName("left"),d=e.getObjectByName("right"),c.position.x-=100,c.rotation.z-=Math.PI/2,d.position.x+=100,d.rotation.z+=Math.PI/2,e.rotation.x+=Math.PI/2,e.rotation.y+=Math.PI)},inferiorView:function(){a.model.rotation.y+=Math.PI},anteriorView:function(){a.resetView(),a.model.rotation.x-=Math.PI/2,a.model.rotation.z+=Math.PI},posteriorView:function(){a.resetView(),a.model.rotation.x-=Math.PI/2}};a.setTransparency=function(b,c){c=c||{};var d,e,f,g=c.shape_name,h=a.model.getObjectByName(g);d=h?[h]:a.model.children||[],d.forEach(function(a){e=a.material,e.opacity=b,e.transparent=1===b?!1:!0,f=a.getObjectByName("__WIREFRAME__"),f&&(f.material.opacity=e.opacity,f.material.transparent=e.transparent) +}),a.updated=!0},a.setWireframe=function(c,e){e=e||{};var f,g,h=e.shape_name,i=a.model.getObjectByName(h);f=i?[i]:a.model.children||[],f.forEach(function(a){g=a.getObjectByName("__WIREFRAME__"),g?d(a,g,c):a.has_wireframe&&b(a,function(b){d(a,b,c)})})},a.setView=function(b,c){var d=b+"View",e=a.model_data.get(c);a.resetView(),e&&BrainBrowser.utils.isFunction(h[d])&&h[d](e),a.updated=!0},a.separateHalves=function(b,c){b=b||1,c=c||{},a.model_data.get(c.model_name).split&&(a.model.children[0].position.x-=b,a.model.children[1].position.x+=b),a.updated=!0}}; \ No newline at end of file diff --git a/build/brainbrowser-2.2.0/brainbrowser.volume-viewer.min.js b/build/brainbrowser-2.2.0/brainbrowser.volume-viewer.min.js new file mode 100644 index 00000000..07be025b --- /dev/null +++ b/build/brainbrowser-2.2.0/brainbrowser.volume-viewer.min.js @@ -0,0 +1,32 @@ +/* +* BrainBrowser: Web-based Neurological Visualization Tools +* (https://brainbrowser.cbrain.mcgill.ca) +* +* Copyright (C) 2011 +* The Royal Institution for the Advancement of Learning +* McGill University +* +* This program is free software: you can redistribute it and/or modify +* it under the terms of the GNU Affero General Public License as +* published by the Free Software Foundation, either version 3 of the +* License, or (at your option) any later version. +* +* This program is distributed in the hope that it will be useful, +* but WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +* GNU Affero General Public License for more details. +* +* You should have received a copy of the GNU Affero General Public License +* along with this program. If not, see . +*/ + +/* +* BrainBrowser v2.2.0 +* +* Author: Tarek Sherif (http://tareksherif.ca/) +* Author: Nicolas Kassis +* Author: Paul Mougel +* +* three.js (c) 2010-2014 three.js authors, used under the MIT license*/ +!function(){"use strict";var a="2.2.0";a=a.indexOf("BRAINBROWSER_VERSION")>0?"D.E.V":a,window.BrainBrowser={version:a},window.requestAnimationFrame=window.requestAnimationFrame||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame||window.oRequestAnimationFrame||window.msRequestAnimationFrame||function(a){return window.setTimeout(a,1e3/60)},window.cancelAnimationFrame=window.cancelAnimationFrame||function(a){window.clearTimeout(a)}}(),function(){"use strict";function a(b,c,d,e){return c>d?e(b):void Object.keys(b).forEach(function(f){a(b[f],c+1,d,e)})}BrainBrowser.createTreeStore=function(){var b={};return{set:function(){var a,c,d,e,f=arguments[arguments.length-1],g=Array.prototype.slice.call(arguments,0,arguments.length-1),h=b;for(c=0,d=g.length-1;d>c;c++){if(a=g[c],h[a]&&"object"!=typeof h[a])throw e="Hash key '["+g.slice(0,c+1).join("][")+"]' has already been set to a non-object value.\nCannot set '["+g.join("][")+"]'",BrainBrowser.events.triggerEvent("error",{message:e}),new Error(e);h[a]||(h[a]={}),h=h[a]}a=g[c],h[a]=f},get:function(){var a,c,d,e=Array.prototype.slice.call(arguments),f=b;if(0===e.length)return b;for(c=0,d=e.length-1;d>c;c++){if(a=e[c],void 0===f[a])return null;f=f[a]}return a=e[c],void 0!==f[a]?f[a]:null},remove:function(){var a,c,d,e,f=Array.prototype.slice.call(arguments),g=b;for(c=0,d=f.length-1;d>c;c++){if(a=f[c],void 0===g[a])return null;g=g[a]}return a=f[c],e=g[a],g[a]=void 0,e},reset:function(a){a=a&&"object"==typeof a?a:{},b=a},forEach:function(c,d){c=c>0?c:1,a(b,1,c,d)}}}}(),function(){"use strict";BrainBrowser.createColorMap=function(a,b){function c(a,b,c,d,e,f,g){var h;return(b>a||a>c)&&!e?-1:(h=Math.floor(Math.max(0,Math.min((a-b)*d,g-1))),f&&(h=g-1-h),h*=4)}function d(a,b,c){var d,e,f,g=document.createElement("canvas"),h=new Array(256);for(g.width=256,g.height=c,d=0;256>d;d++)h[d]=d;for(f=r.scale,r.scale=255,a=r.mapColors(h),r.scale=f,e=g.getContext("2d"),d=0;256>d;d++)e.fillStyle="rgb("+Math.floor(a[4*d])+", "+Math.floor(a[4*d+1])+", "+Math.floor(a[4*d+2])+")",e.fillRect(d,0,1,b);return g}b=b||{};var e,f,g,h,i,j,k,l,m=void 0===b.clamp?!0:b.clamp,n=b.flip||!1,o=b.scale||1,p=b.contrast||1,q=b.brightness||0;if(a)for(f=a.trim().split(/\n/),e=new Float32Array(4*f.length),k=0,i=0,g=f.length;g>i;i++)if(l=f[i].trim().split(/\s+/).slice(0,4),h=l.length,!(3>h)){for(j=0;h>j;j++)e[k+j]=parseFloat(l[j]);4>h&&(e[k+3]=1),k+=4}var r={colors:e,clamp:m,flip:n,scale:o,contrast:p,brightness:q,mapColors:function(a,b){b=b||{};var d,e,f,g,h,i,j=void 0===b.min?0:b.min,k=void 0===b.max?255:b.max,l=b.default_colors||[0,0,0,1],m=b.destination||new Float32Array(4*a.length),n=r.colors,o=r.colors.length/4,p=void 0===b.scale?r.scale:b.scale,q=void 0===b.clamp?r.clamp:b.clamp,s=void 0===b.flip?r.flip:b.flip,t=void 0===b.brightness?r.brightness:b.brightness,u=void 0===b.contrast?r.contrast:b.contrast,v=4===l.length?0:1,w=k-j,x=o/w;for(t*=p,u*=p,e=0,h=a.length;h>e;e++)d=a[e],f=4*e,i=c(d,j,k,x,q,s,o),0>i?(g=f*v,m[f]=u*l[g]+t,m[f+1]=u*l[g+1]+t,m[f+2]=u*l[g+2]+t,m[f+3]=p*l[g+3]):(m[f]=u*n[i]+t,m[f+1]=u*n[i+1]+t,m[f+2]=u*n[i+2]+t,m[f+3]=p*n[i+3]);return m},colorFromValue:function(a,b){b=b||{};var d,e=b.hex||!1,f=void 0===b.min?0:b.min,g=void 0===b.max?255:b.max,h=void 0===b.scale?r.scale:b.scale,i=void 0===b.brightness?r.brightness:b.brightness,j=void 0===b.contrast?r.contrast:b.contrast,k=g-f,l=r.colors.length/4,m=l/k,n=c(a,f,g,m,r.clamp,r.flip,l);return d=n>=0?Array.prototype.slice.call(r.colors,n,n+4):[0,0,0,1],d[0]=Math.max(0,Math.min(j*d[0]+i,1)),d[1]=Math.max(0,Math.min(j*d[1]+i,1)),d[2]=Math.max(0,Math.min(j*d[2]+i,1)),e?(d[0]=Math.floor(255*d[0]),d[1]=Math.floor(255*d[1]),d[2]=Math.floor(255*d[2]),d[3]=Math.floor(255*d[3]),d[0]=("0"+d[0].toString(16)).slice(-2),d[1]=("0"+d[1].toString(16)).slice(-2),d[2]=("0"+d[2].toString(16)).slice(-2),d=d.slice(0,3).join("")):(d[0]=d[0]*h,d[1]=d[1]*h,d[2]=d[2]*h,d[3]=d[3]*h),d},createElement:function(a,b){var c,e,f=r.colors,g=b-a;return c=d(f,20,40,n),e=c.getContext("2d"),e.fillStyle="#FFA000",e.fillRect(.5,20,1,10),e.fillText(a.toPrecision(3),.5,40),e.fillRect(c.width/4,20,1,10),e.fillText((a+.25*g).toPrecision(3),.25*c.width,40),e.fillRect(c.width/2,20,1,10),e.fillText((a+.5*g).toPrecision(3),.5*c.width,40),e.fillRect(3*c.width/4,20,1,10),e.fillText((a+.75*g).toPrecision(3),.75*c.width,40),e.fillRect(c.width-.5,20,1,10),e.fillText(b.toPrecision(3),c.width-20,40),c}};return r}}(),function(){"use strict";var a=BrainBrowser.createTreeStore();BrainBrowser.config={set:function(b,c){b=b||"";var d=b.split(".");d.push(c),a.set.apply(a,d)},get:function(b){b=b||"";var c=b.split(".");return a.get.apply(a,c)}}}(),function(){"use strict";function a(a,b){try{a.call(b.target,b)}catch(c){console.error("Error in event handler for: ",b.name),console.error(c.stack||c.message||c)}}var b=["eventmodelcleanup"];BrainBrowser.events={unpropagatedEvent:function(a){b.push(a)},addEventModel:function(c){var d=[],e={};c.addEventListener=function(a,b){d[a]||(d[a]=[]),d[a].push(b)},c.triggerEvent=function(e,f){var g=this,h=c.directPropagationTargets(e);f=f||{},f.name=e,f.target=g,d[e]&&d[e].forEach(function(b){a(b,f)}),d["*"]&&d["*"].forEach(function(b){a(b,f)}),-1===b.indexOf(e)&&(h.forEach(function(a){a.triggerEvent.call(g,e,f)}),0===h.length&&c!==BrainBrowser.events&&BrainBrowser.events.triggerEvent.call(g,e,f))},c.propagateEventTo=function(a,b){if(!BrainBrowser.utils.isFunction(b.allPropagationTargets))throw new Error("Propagation target doesn't seem to have an event model.");if(c===BrainBrowser.events||-1!==b.allPropagationTargets(a).indexOf(c))throw new Error("Propagating event '"+a+"' would cause a cycle.");e[a]=e[a]||[],-1===c.directPropagationTargets().indexOf(b)&&b.addEventListener("eventmodelcleanup",function(){this===b&&c.stopPropagatingTo(b)}),-1===e[a].indexOf(b)&&e[a].push(b)},c.propagateEventFrom=function(a,b){b.propagateEventTo(a,c)},c.stopPropagatingTo=function(a){Object.keys(e).forEach(function(b){e[b]=e[b].filter(function(b){return b!==a})})},c.directPropagationTargets=function(a){var b=[],c=void 0===a?Object.keys(e):[a,"*"];return c.forEach(function(a){var c=e[a]||[];c.forEach(function(a){-1===b.indexOf(a)&&b.push(a)})}),b},c.allPropagationTargets=function(a){var b=c.directPropagationTargets(a),d=Array.prototype.slice.call(b);return b.forEach(function(b){b.allPropagationTargets(a).forEach(function(a){-1===d.indexOf(a)&&d.push(a)})}),d}}},BrainBrowser.events.addEventModel(BrainBrowser.events)}(),function(){"use strict";var a=BrainBrowser.loader={loadFromURL:function(b,c,d){d=d||{};var e,f=new XMLHttpRequest,g=d.result_type,h=b.split("/"),i=h[h.length-1];f.open("GET",b),"arraybuffer"===g&&(f.responseType="arraybuffer"),f.onreadystatechange=function(){if(4===f.readyState){if(e=f.status,!(e>=200&&300>e||304===e)){var g="error loading URL: "+b+"\nHTTP Response: "+f.status+"\nHTTP Status: "+f.statusText+"\nResponse was: \n"+f.response;throw BrainBrowser.events.triggerEvent("error",{message:g}),new Error(g)}a.checkCancel(d)||c(f.response,i,d)}},f.send()},loadFromFile:function(a,b,c){var d=a.files;if(0!==d.length){c=c||{};var e=c.result_type,f=new FileReader,g=a.value.split("\\"),h=g[g.length-1];f.file=d[0],f.onloadend=function(a){b(a.target.result,h,c)},f.onerror=function(){var a="error reading file: "+h;throw BrainBrowser.events.triggerEvent("error",{message:a}),new Error(a)},"arraybuffer"===e?f.readAsArrayBuffer(d[0]):f.readAsText(d[0])}},loadColorMapFromURL:function(b,c,d){a.loadFromURL(b,function(a,b,d){c(BrainBrowser.createColorMap(a,d),b,d)},d)},loadColorMapFromFile:function(b,c,d){a.loadFromFile(b,function(a,b,d){c(BrainBrowser.createColorMap(a,d),b,d)},d)},checkCancel:function(a){a=a||{},BrainBrowser.utils.isFunction(a)&&(a={test:a});var b=a.test,c=a.cleanup,d=!1;return b&&b()&&(d=!0,c&&c()),d}}}(),function(){"use strict";BrainBrowser.utils={canvasEnabled:function(){return!!document.createElement("canvas")},webglEnabled:function(){var a=document.createElement("canvas");try{return!(!a||!window.WebGLRenderingContext||!a.getContext("webgl")&&!a.getContext("experimental-webgl"))}catch(b){return!1}},webWorkersEnabled:function(){return!!window.Worker},webGLErrorMessage:function(){var a,b='BrainBrowser requires WebGL.
';return b+=window.WebGLRenderingContext?"Your browser seems to support it, but it is
disabled or unavailable.
":"Your browser does not seem to support it.
",b+='Test your browser\'s WebGL support here.',a=document.createElement("div"),a.id="webgl-error",a.innerHTML=b,a},isFunction:function(a){return a instanceof Function||"function"==typeof a},isNumeric:function(a){return!isNaN(parseFloat(a))},createDataURL:function(a,b){if(!window.URL||!window.URL.createObjectURL)throw new Error("createDataURL requires URL.createObjectURL which does not seem to be available is this browser.");return window.URL.createObjectURL(new Blob([a],{type:b||"text/plain"}))},min:function(){var a=Array.prototype.slice.call(arguments);a=1===a.length&&BrainBrowser.utils.isNumeric(a[0].length)?a[0]:a;var b,c,d=a[0];for(b=1,c=a.length;c>b;b++)a[b]b;b++)a[b]>d&&(d=a[b]);return d},getOffset:function(a){for(var b=0,c=0;a.offsetParent;)b+=a.offsetTop,c+=a.offsetLeft,a=a.offsetParent;return{top:b,left:c}},captureMouse:function(a){var b={x:0,y:0,left:!1,middle:!1,right:!1};return document.addEventListener("mousemove",function(c){var d,e,f=BrainBrowser.utils.getOffset(a);void 0!==c.pageX?(d=c.pageX,e=c.pageY):(d=c.clientX+window.pageXOffset,e=c.clientY+window.pageYOffset),b.x=d-f.left,b.y=e-f.top},!1),a.addEventListener("mousedown",function(a){a.preventDefault(),0===a.button&&(b.left=!0),1===a.button&&(b.middle=!0),2===a.button&&(b.right=!0)},!1),a.addEventListener("mouseup",function(a){a.preventDefault(),0===a.button&&(b.left=!1),1===a.button&&(b.middle=!1),2===a.button&&(b.right=!1)},!1),a.addEventListener("mouseleave",function(a){a.preventDefault(),b.left=b.middle=b.right=!1},!1),a.addEventListener("contextmenu",function(a){a.preventDefault()},!1),b},captureTouch:function(a){function b(b){var d,e,f,g,h,i=BrainBrowser.utils.getOffset(a);for(c.length=g=b.touches.length,f=0;g>f;f++)h=b.touches[f],void 0!==h.pageX?(d=h.pageX,e=h.pageY):(d=h.clientX+window.pageXOffset,e=h.clientY+window.pageYOffset),c[f]=c[f]||{},c[f].x=d-i.left,c[f].y=e-i.top}var c=[];return a.addEventListener("touchstart",b,!1),a.addEventListener("touchmove",b,!1),a.addEventListener("touchend",b,!1),c}}}(),function(){"use strict";var a=BrainBrowser.VolumeViewer={};a.modules={},a.volume_loaders={},a.start=function(b,c){function d(){document.addEventListener("keydown",function(a){if(f.active_panel){var b,c,d,e=f.active_panel,g=e.volume,h=e.axis,i=a.which,j={17:function(){e.anchor||(e.mouse.left||e.mouse.middle||e.mouse.right)&&(e.anchor={x:e.mouse.x,y:e.mouse.y})},37:function(){b=e.slice.width_space.name,g.position[b]>0&&g.position[b]--},38:function(){b=e.slice.height_space.name,g.position[b]0&&g.position[b]--}};return"function"==typeof j[i]?(a.preventDefault(),j[i](),e.updated=!0,g.display.forEach(function(a){e!==a&&a.updateSlice()}),f.synced&&(d=e.getCursorPosition(),f.volumes.forEach(function(a){var b;a!==g&&(b=a.display.getPanel(h),b.updateVolumePosition(d.x,d.y),a.display.forEach(function(a){a!==b&&a.updateSlice()}))})),!1):32===i&&(a.preventDefault(),g.data.time)?(c=a.shiftKey?Math.max(0,g.current_time-1):Math.min(g.current_time+1,g.data.time.space_length-1),g.current_time=c,f.synced&&f.volumes.forEach(function(a){a!==g&&(a.current_time=Math.max(0,Math.min(c,a.data.time.space_length-1)))}),f.redrawVolumes(),!1):void 0}},!1),document.addEventListener("keyup",function(a){var b=a.which,c={17:function(){f.volumes.forEach(function(a){a.display.forEach(function(a){a.anchor=null})})}};return"function"==typeof c[b]?(a.preventDefault(),c[b](),!1):void 0},!1)}var e;e="string"==typeof b?document.getElementById(b):b;var f={dom_element:e,volumes:[],synced:!1};return Object.keys(a.modules).forEach(function(b){a.modules[b](f)}),BrainBrowser.events.addEventModel(f),console.log("BrainBrowser Volume Viewer v"+BrainBrowser.version),d(),c(f),f}}(),function(){"use strict";BrainBrowser.VolumeViewer.createDisplay=function(){var a={},b={setPanel:function(c,d){a[c]&&a[c].triggerEvent("eventmodelcleanup"),d.propagateEventTo("*",b),a[c]=d},getPanel:function(b){return a[b]},refreshPanels:function(){b.forEach(function(a){a.updateSlice()})},setContrast:function(a){b.forEach(function(b){b.contrast=a})},setBrightness:function(a){b.forEach(function(b){b.brightness=a})},forEach:function(b){Object.keys(a).forEach(function(c,d){b(a[c],c,d)})}};return BrainBrowser.events.addEventModel(b),b.addEventListener("eventmodelcleanup",function(){b.forEach(function(a){a.triggerEvent("eventmodelcleanup")})}),b}}(),function(){"use strict";function a(a,b){a.slice=b,a.slice_image=a.slice.getImage(a.zoom,a.contrast,a.brightness)}function b(a,b){var c,d,e,f,g,h,i=a.context,j=a.getCursorPosition(),k=a.zoom,l=8*k;b=b||"#FF0000",i.save(),i.strokeStyle=b,i.fillStyle=b,e=k,c=j.x,d=j.y,i.lineWidth=2*e,i.beginPath(),i.moveTo(c,d-l),i.lineTo(c,d-e),i.moveTo(c,d+e),i.lineTo(c,d+l),i.moveTo(c-l,d),i.lineTo(c-e,d),i.moveTo(c+e,d),i.lineTo(c+l,d),i.stroke(),a.anchor&&(g=(a.anchor.x-j.x)/a.zoom,h=(a.anchor.y-j.y)/a.zoom,f=Math.sqrt(g*g+h*h),i.font="bold 12px arial",a.canvas.width-j.x<50?(i.textAlign="right",c=j.x-l):(i.textAlign="left",c=j.x+l),j.y<30?(i.textBaseline="top",d=j.y+l):(i.textBaseline="bottom",d=j.y-l),i.fillText(f.toFixed(2),c,d),i.lineWidth=1,i.beginPath(),i.arc(a.anchor.x,a.anchor.y,2*e,0,2*Math.PI),i.fill(),i.moveTo(a.anchor.x,a.anchor.y),i.lineTo(j.x,j.y),i.stroke()),i.restore()}function c(a){var b,c=a.slice_image;c&&(b={x:a.image_center.x-a.slice_image.width/2,y:a.image_center.y-a.slice_image.height/2},a.context.putImageData(c,b.x,b.y))}function d(a){var b=a.slice;return{x:a.image_center.x-Math.abs(b.width_space.step*b.width_space.space_length*a.zoom)/2,y:a.image_center.y-Math.abs(b.height_space.step*b.height_space.space_length*a.zoom)/2}}BrainBrowser.VolumeViewer.createPanel=function(e){e=e||{};var f=0,g={x:0,y:0},h={x:0,y:0},i=null,j={image_center:{x:0,y:0},zoom:1,contrast:1,brightness:0,updated:!0,setSize:function(a,b,c){c=c||{},a=a>0?a:0,b=b>0?b:0;var d,e,f,g=c.scale_image;g&&(d=j.canvas.width,e=j.canvas.width,f=Math.min(a/d,b/e)),j.canvas.width=a,j.canvas.height=b,g&&(j.zoom=j.zoom*f,j.image_center.x=a/2,j.image_center.y=b/2,j.updateVolumePosition(),j.updateSlice()),j.updated=!0},followPointer:function(a){var b=a.x-h.x,c=a.y-h.y,d=j.getCursorPosition();j.image_center.x+=b,j.image_center.y+=c,d.x+=b,d.y+=c,h.x=a.x,h.y=a.y,j.updated=!0},reset:function(){j.zoom=1,j.image_center.x=j.canvas.width/2,j.image_center.y=j.canvas.height/2},getCursorPosition:function(){var a=j.volume,b=j.slice,c=d(j);return{x:a.position[b.width_space.name]*Math.abs(b.width_space.step)*j.zoom+c.x,y:(b.height_space.space_length-a.position[b.height_space.name]-1)*Math.abs(b.height_space.step)*j.zoom+c.y}},updateVolumePosition:function(a,b){var c,e,f,g=d(j),h=j.zoom,i=j.volume,k=j.slice;(void 0===a||void 0===b)&&(c=j.getCursorPosition(),a=c.x,b=c.y),e=Math.round((a-g.x)/h/Math.abs(k.width_space.step)),f=Math.round(k.height_space.space_length-(b-g.y)/h/Math.abs(k.height_space.step)-1),i.position[j.slice.width_space.name]=e,i.position[j.slice.height_space.name]=f,j.updated=!0},updateSlice:function(b){clearTimeout(i),i=setTimeout(function(){var c,d=j.volume;c=d.slice(j.axis),c.min=d.min,c.max=d.max,a(j,c),j.triggerEvent("sliceupdate",{volume:d,slice:c}),j.updated=!0,BrainBrowser.utils.isFunction(b)&&b(c)},0)},draw:function(a,d){var e=j.getCursorPosition();if((g.x!==e.x||g.y!==e.y)&&(g.x=e.x,g.y=e.y,j.updated=!0,j.triggerEvent("cursorupdate",{volume:j.volume,cursor:e})),f!==j.zoom&&(f=j.zoom,j.updated=!0,j.triggerEvent("zoom",{volume:j.volume,zoom:j.zoom})),j.touches[0]?(h.x=j.touches[0].x,h.y=j.touches[0].y):(h.x=j.mouse.x,h.y=j.mouse.y),j.updated){var i=j.canvas,k=j.context,l=4,m=l/2;k.globalAlpha=255,k.clearRect(0,0,i.width,i.height),c(j),j.triggerEvent("draw",{volume:j.volume,cursor:e,canvas:i,context:k}),b(j,a),d&&(k.save(),k.strokeStyle="#EC2121",k.lineWidth=l,k.strokeRect(m,m,i.width-l,i.height-l),k.restore()),j.updated=!1}}};return Object.keys(e).forEach(function(a){BrainBrowser.utils.isFunction(j[a])||(j[a]=e[a])}),BrainBrowser.events.addEventModel(j),j.canvas&&BrainBrowser.utils.isFunction(j.canvas.getContext)&&(j.context=j.canvas.getContext("2d"),j.mouse=BrainBrowser.utils.captureMouse(j.canvas),j.touches=BrainBrowser.utils.captureTouch(j.canvas)),j.volume&&a(j,j.volume.slice(j.axis)),j}}(),function(){"use strict";BrainBrowser.VolumeViewer.utils={nearestNeighbor:function(a,b,c,d,e,f){f=f||{};var g,h,i,j,k,l,m,n,o,p,q=f.block_size||1,r=f.array_type||Uint8ClampedArray;if(b===d&&c===e)return a;for(k=new r(d*e*q),g=b/d,h=c/e,m=0;e>m;m++)for(i=Math.floor(m*h)*b,n=m*d,l=0;d>l;l++)for(j=(i+Math.floor(l*g))*q,o=(n+l)*q,p=0;q>p;p++)k[o+p]=a[j+p];return k},flipArray:function(a,b,c,d){d=d||{};var e,f,g,h,i,j,k,l,m,n=d.flipx||!1,o=d.flipy||!1,p=d.block_size||1,q=new a.constructor(a.length);if(!n&&!o){for(e=0,f=a.length;f>e;e++)q[e]=a[e];return q}for(f=0;c>f;f++)for(j=f*b,i=o?c-f-1:f,l=i*b,e=0;b>e;e++)for(k=(j+e)*p,h=n?b-e-1:e,m=(l+h)*p,g=0;p>g;g++)q[k+g]=a[m+g];return q}}}(),BrainBrowser.VolumeViewer.modules.loading=function(a){"use strict";function b(a,b){var c,d=h.volume_loaders[a.type];if(!d)throw c="Unsuported Volume Type",BrainBrowser.events.triggerEvent("error",{message:c}),new Error(c);d(a,b)}function c(c,d,e){b(d,function(b){var f=0,h=d.views||["xspace","yspace","zspace"];BrainBrowser.events.addEventModel(b),b.addEventListener("eventmodelcleanup",function(){b.display.triggerEvent("eventmodelcleanup")}),a.volumes[c]=b,b.color_map=i,b.display=g(a.dom_element,c,d),b.propagateEventTo("*",a),["xspace","yspace","zspace"].forEach(function(a){b.position[a]=Math.floor(b.header[a].space_length/2)}),b.display.forEach(function(c){c.updateSlice(function(){++f===h.length&&(a.triggerEvent("volumeloaded",{volume:b}),BrainBrowser.utils.isFunction(e)&&e(b))})})})}function d(b,c,d){b.cursor_color=c,i=b,a.volumes.forEach(function(a){a.color_map=a.color_map||i}),BrainBrowser.utils.isFunction(d)&&d(b)}function e(b,c,d,e){c.cursor_color=d,a.setVolumeColorMap(b,c),BrainBrowser.utils.isFunction(e)&&e(a.volumes[b],c)}function f(a,b,c,d){var e=document.getElementById(c).innerHTML.replace(/\{\{VOLID\}\}/gm,b),f=document.createElement("div");f.innerHTML=e;var g,h,i,j=f.childNodes,k=f.getElementsByClassName(d)[0];for(g=0,h=a.childNodes.length;h>g;g++)i=a.childNodes[g],1===i.nodeType&&(k.appendChild(i),g--,h--);return j}function g(b,c,d){var e,g=document.createElement("div"),i=a.volumes[c],l=h.createDisplay(),m=d.template||{},n=d.views||["xspace","yspace","zspace"];return l.propagateEventTo("*",i),g.classList.add("volume-container"),n.forEach(function(a){var b=document.createElement("canvas");b.width=j,b.height=k,b.classList.add("slice-display"),b.style.backgroundColor="#000000",g.appendChild(b),l.setPanel(a,h.createPanel({volume:i,volume_id:c,axis:a,canvas:b,image_center:{x:b.width/2,y:b.height/2}}))}),m.element_id&&m.viewer_insert_class&&(e=f(g,c,m.element_id,m.viewer_insert_class),"function"==typeof m.complete&&m.complete(i,e),Array.prototype.forEach.call(e,function(a){1===a.nodeType&&g.appendChild(a)})),function(){var b=null;n.forEach(function(d){function e(b,e,f){f&&(a.volumes.forEach(function(a){a.display.forEach(function(a){a.anchor=null})}),r.anchor={x:b.x,y:b.y}),e||(r.updateVolumePosition(b.x,b.y),i.display.forEach(function(a){r!==a&&a.updateSlice()}),a.synced&&a.volumes.forEach(function(a,e){var f;e!==c&&(f=a.display.getPanel(d),f.updateVolumePosition(b.x,b.y),a.display.forEach(function(a){a!==f&&a.updateSlice()}))})),r.updated=!0}function f(b,e){e?(r.followPointer(b),a.synced&&a.volumes.forEach(function(a,e){var f;e!==c&&(f=a.display.getPanel(d),f.followPointer(b))})):(r.updateVolumePosition(b.x,b.y),i.display.forEach(function(a){r!==a&&a.updateSlice()}),a.synced&&a.volumes.forEach(function(a,e){var f;e!==c&&(f=a.display.getPanel(d),f.updateVolumePosition(b.x,b.y),a.display.forEach(function(a){a!==f&&a.updateSlice()}))})),r.updated=!0}function g(a){a.target===b&&(a.preventDefault(),f(r.mouse,a.shiftKey))}function h(a){a.target===b&&(a.preventDefault(),f(r.touches[0],r.touches.length===n.length))}function j(){document.removeEventListener("mousemove",g,!1),document.removeEventListener("mouseup",j,!1),a.volumes.forEach(function(a){a.display.forEach(function(a){a.anchor=null})}),b=null}function k(){document.removeEventListener("touchmove",h,!1),document.removeEventListener("touchend",k,!1),a.volumes.forEach(function(a){a.display.forEach(function(a){a.anchor=null})}),b=null}function m(){var a,b=r.touches[0].x-r.touches[1].x,c=r.touches[0].y-r.touches[1].y,d=Math.sqrt(b*b+c*c);null!==t&&(a=d-t,q(.2*a)),t=d}function o(){document.removeEventListener("touchmove",m,!1),document.removeEventListener("touchend",o,!1),t=null}function p(a){q(Math.max(-1,Math.min(1,a.wheelDelta||-a.detail)))}function q(b){event.preventDefault(),r.zoom=Math.max(r.zoom+.05*b,.05),r.updateVolumePosition(),r.updateSlice(),a.synced&&a.volumes.forEach(function(a,b){var e=a.display.getPanel(d);b!==c&&(e.zoom=r.zoom,e.updateVolumePosition(),e.updateSlice())})}var r=l.getPanel(d),s=r.canvas,t=null;s.addEventListener("mousedown",function(c){c.preventDefault(),b=c.target,a.active_panel&&(a.active_panel.updated=!0),a.active_panel=r,document.addEventListener("mousemove",g,!1),document.addEventListener("mouseup",j,!1),e(r.mouse,c.shiftKey,c.ctrlKey)},!1),s.addEventListener("touchstart",function(c){c.preventDefault(),b=c.target,a.active_panel&&(a.active_panel.updated=!0),a.active_panel=r,2===r.touches.length?(document.removeEventListener("touchmove",h,!1),document.removeEventListener("touchend",k,!1),document.addEventListener("touchmove",m,!1),document.addEventListener("touchend",o,!1)):(document.removeEventListener("touchmove",m,!1),document.removeEventListener("touchend",o,!1),document.addEventListener("touchmove",h,!1),document.addEventListener("touchend",k,!1),e(r.touches[0],3===r.touches.length,!0))},!1),s.addEventListener("mousewheel",p,!1),s.addEventListener("DOMMouseScroll",p,!1)})}(),b.appendChild(g),a.triggerEvent("volumeuiloaded",{container:g,volume:i,volume_id:c}),l}var h=BrainBrowser.VolumeViewer,i=null,j=256,k=256;a.loadVolumes=function(b){function d(d){c(d,g[d],function(){++j1?a.createOverlay(f,function(){BrainBrowser.utils.isFunction(i)&&i(),a.triggerEvent("volumesloaded")}):(BrainBrowser.utils.isFunction(i)&&i(),a.triggerEvent("volumesloaded")))})}b=b||{};var e,f=b.overlay&&"object"==typeof b.overlay?b.overlay:{},g=b.volumes,h=b.volumes.length,i=b.complete,j=0;for(e=0;h>e;e++)d(e)},a.loadVolumeColorMapFromURL=function(a,b,c,d){BrainBrowser.loader.loadColorMapFromURL(b,function(b){e(a,b,c,d)},{scale:255})},a.loadDefaultColorMapFromURL=function(a,b,c){BrainBrowser.loader.loadColorMapFromURL(a,function(a){d(a,b,c)},{scale:255})},a.loadVolumeColorMapFromFile=function(a,b,c,d){BrainBrowser.loader.loadColorMapFromFile(b,function(b){e(a,b,c,d)},{scale:255})},a.loadDefaultColorMapFromFile=function(a,b,c){BrainBrowser.loader.loadColorMapFromFile(a,function(a){d(a,b,c)},{scale:255})},a.setVolumeColorMap=function(b,c){a.volumes[b].color_map=c},a.loadVolume=function(b,d){c(a.volumes.length,b,d)},a.clearVolumes=function(){a.volumes.forEach(function(a){a.triggerEvent("eventmodelcleanup")}),a.volumes=[],a.active_panel=null,a.dom_element.innerHTML=""},a.createOverlay=function(b,c){b=b||{},a.loadVolume({volumes:a.volumes,type:"overlay",template:b.template},c)},a.setDefaultPanelSize=function(a,b){j=a,k=b}},BrainBrowser.VolumeViewer.modules.rendering=function(a){"use strict";a.draw=function(){a.volumes.forEach(function(b){b.display.forEach(function(c){c.draw(b.color_map.cursor_color,a.active_panel===c)})})},a.render=function(){a.triggerEvent("rendering"),function b(){window.requestAnimationFrame(b),a.draw()}()},a.redrawVolume=function(b){var c=a.volumes[b];c.display.forEach(function(a){a.updateSlice()})},a.redrawVolumes=function(){a.volumes.forEach(function(b,c){a.redrawVolume(c)})},a.resetDisplays=function(){a.volumes.forEach(function(a){a.display.forEach(function(a){a.reset()})})},a.setPanelSize=function(b,c,d){a.volumes.forEach(function(a){a.display.forEach(function(a){a.setSize(b,c,d)})})}},function(){"use strict";function a(a,b){var c,d;try{c=JSON.parse(a)}catch(e){throw d="server did not respond with valid JSON\nResponse was: \n"+a,BrainBrowser.events.triggerEvent("error",{message:d}),new Error(d)}BrainBrowser.utils.isFunction(b)&&b(c)}function b(a,b,f){var g=c(a,new Uint8Array(b)),h={position:{},current_time:0,data:g,header:g.header,min:0,max:255,slice:function(a,b,c){b=void 0===b?h.position[a]:b,c=void 0===c?h.current_time:c;var f=h.data.slice(a,b,c);return f.color_map=h.color_map,f.min=h.min,f.max=h.max,f.axis=a,f.getImage=function(a,b,c){a=a||1;var g,i=f.color_map;if(!i)throw g="No color map set for this volume. Cannot render slice.",h.triggerEvent("error",g),new Error(g);var j=f.width_space.step,k=f.height_space.step,l=Math.abs(Math.floor(f.width*j*a)),m=Math.abs(Math.floor(f.height*k*a)),n=e.createImageData(f.width,f.height),o=e.createImageData(l,m);return i.mapColors(f.data,{min:f.min,max:f.max,contrast:b,brightness:c,destination:n.data}),o.data.set(d.utils.nearestNeighbor(n.data,n.width,n.height,l,m,{block_size:4})),o},f},getIntensityValue:function(a,b,c,d){if(a=void 0===a?h.position.xspace:a,b=void 0===b?h.position.yspace:b,c=void 0===c?h.position.zspace:c,d=void 0===d?h.current_time:d,0>a||a>h.data.xspace.space_length||0>b||b>h.data.yspace.space_length||0>c||c>h.data.zspace.space_length)return 0;var e=h.data.slice("zspace",c,d);return e.data[(e.height_space.space_length-b-1)*e.width+a]},getVoxelCoords:function(){var a=h.data,b={xspace:a.xspace.step>0?h.position.xspace:a.xspace.space_length-h.position.xspace,yspace:a.yspace.step>0?h.position.yspace:a.yspace.space_length-h.position.yspace,zspace:a.zspace.step>0?h.position.zspace:a.zspace.space_length-h.position.zspace};return{i:b[a.order[0]],j:b[a.order[1]],k:b[a.order[2]]}},setVoxelCoords:function(a,b,c){var d=h.data,e=d.order[0],f=d.order[1],g=d.order[2];h.position[e]=d[e].step>0?a:d[e].space_length-a,h.position[f]=d[f].step>0?b:d[f].space_length-b,h.position[g]=d[g].step>0?c:d[g].space_length-c},getWorldCoords:function(){var a=h.getVoxelCoords();return h.voxelToWorld(a.i,a.j,a.k)},setWorldCoords:function(a,b,c){var d=h.worldToVoxel(a,b,c);h.setVoxelCoords(d.i,d.j,d.k)},voxelToWorld:function(a,b,c){var d,e,f,g={};g[h.data.order[0]]=a,g[h.data.order[1]]=b,g[h.data.order[2]]=c,d=g.xspace,e=g.yspace,f=g.zspace;var i=h.data.xspace.direction_cosines,j=h.data.yspace.direction_cosines,k=h.data.zspace.direction_cosines,l=h.data.xspace.step,m=h.data.yspace.step,n=h.data.zspace.step,o=h.data.voxel_origin;return{x:d*i[0]*l+e*j[0]*m+f*k[0]*n+o.x,y:d*i[1]*l+e*j[1]*m+f*k[1]*n+o.y,z:d*i[2]*l+e*j[2]*m+f*k[2]*n+o.z}},worldToVoxel:function(a,b,c){var d=h.data.xspace.direction_cosines,e=h.data.yspace.direction_cosines,f=h.data.zspace.direction_cosines,g=h.data.xspace.step,i=h.data.yspace.step,j=h.data.zspace.step,k=h.data.voxel_origin,l=(-k.x*d[0]-k.y*d[1]-k.z*d[2])/g,m=(-k.x*e[0]-k.y*e[1]-k.z*e[2])/i,n=(-k.x*f[0]-k.y*f[1]-k.z*f[2])/j,o={x:Math.round(a*d[0]/g+b*d[1]/g+c*d[2]/g+l),y:Math.round(a*e[0]/i+b*e[1]/i+c*e[2]/i+m),z:Math.round(a*f[0]/j+b*f[1]/j+c*f[2]/j+n)},p={};return p[h.data.order[0]]=o.x,p[h.data.order[1]]=o.y,p[h.data.order[2]]=o.z,{i:p.xspace,j:p.yspace,k:p.zspace}}};BrainBrowser.utils.isFunction(f)&&f(h)}function c(a,b){var c,d,e,f,g,h,i={data:b,cached_slices:{}};return i.header=a,i.order=a.order,4===a.order.length&&(i.order=i.order.slice(1),i.time=a.time),i.xspace=a.xspace,i.yspace=a.yspace,i.zspace=a.zspace,i.xspace.name="xspace",i.yspace.name="yspace",i.zspace.name="zspace",i.xspace.space_length=parseFloat(i.xspace.space_length),i.yspace.space_length=parseFloat(i.yspace.space_length),i.zspace.space_length=parseFloat(i.zspace.space_length),c=i.xspace.start=parseFloat(i.xspace.start),d=i.yspace.start=parseFloat(i.yspace.start),e=i.zspace.start=parseFloat(i.zspace.start),i.xspace.step=parseFloat(i.xspace.step),i.yspace.step=parseFloat(i.yspace.step),i.zspace.step=parseFloat(i.zspace.step),i.xspace.direction_cosines=i.xspace.direction_cosines||[1,0,0],i.yspace.direction_cosines=i.yspace.direction_cosines||[0,1,0],i.zspace.direction_cosines=i.zspace.direction_cosines||[0,0,1],f=i.xspace.direction_cosines=i.xspace.direction_cosines.map(parseFloat),g=i.yspace.direction_cosines=i.yspace.direction_cosines.map(parseFloat),h=i.zspace.direction_cosines=i.zspace.direction_cosines.map(parseFloat),i.voxel_origin={x:c*f[0]+d*g[0]+e*h[0],y:c*f[1]+d*g[1]+e*h[1],z:c*f[2]+d*g[2]+e*h[2]},i.xspace.width_space=i.yspace,i.xspace.width=i.yspace.space_length,i.xspace.height_space=i.zspace,i.xspace.height=i.zspace.space_length,i.yspace.width_space=i.xspace,i.yspace.width=i.xspace.space_length,i.yspace.height_space=i.zspace,i.yspace.height=i.zspace.space_length,i.zspace.width_space=i.xspace,i.zspace.width=i.xspace.space_length,i.zspace.height_space=i.yspace,i.zspace.height=i.yspace.space_length,i[i.order[0]].offset=i[i.order[1]].space_length*i[i.order[2]].space_length,i[i.order[1]].offset=i[i.order[2]].space_length,i[i.order[2]].offset=1,i.time&&(i.time.space_length=parseFloat(i.time.space_length),i.time.start=parseFloat(i.time.start),i.time.step=parseFloat(i.time.step),i.time.offset=i.xspace.space_length*i.yspace.space_length*i.zspace.space_length),i.slice=function(a,b,c){if(void 0===i.order)return null;c=c||0;var d=i.cached_slices;if(d[a]=d[a]||[],d[a][c]=d[a][c]||[],void 0!==d[a][c][b])return d[a][c][b];var e,f,g,h,j,k,l,m,n,o=i.time?c*i.time.offset:0,p=i[a],q=p.width_space,r=p.height_space,s=p.width,t=p.height,u=p.offset,v=q.offset,w=r.offset,x=new Uint8Array(s*t),y=q.step>0,z=r.step>0,A=p.step>0,B=0;for(k=A?b:p.space_length-b-1,l=o+k*u,f=t-1;f>=0;f--)for(j=z?f:t-f-1,m=l+j*w,g=0;s>g;g++)h=y?g:s-g-1,n=m+h*v,x[B++]=i.data[n];return e={data:x,width_space:q,height_space:r,width:s,height:t},d[a][c][b]=e,e},i}var d=BrainBrowser.VolumeViewer,e=document.createElement("canvas").getContext("2d");d.volume_loaders.minc=function(c,d){var e;if(c.header_url&&c.raw_data_url)BrainBrowser.loader.loadFromURL(c.header_url,function(e){a(e,function(a){BrainBrowser.loader.loadFromURL(c.raw_data_url,function(c){b(a,c,d)},{result_type:"arraybuffer"})})});else{if(!c.header_file||!c.raw_data_file)throw e="invalid volume description.\nDescription must contain property pair 'header_url' and 'raw_data_url', or\n'header_file' and 'raw_data_file'.",BrainBrowser.events.triggerEvent("error",{message:e}),new Error(e);BrainBrowser.loader.loadFromFile(c.header_file,function(e){a(e,function(a){BrainBrowser.loader.loadFromFile(c.raw_data_file,function(c){b(a,c,d)},{result_type:"arraybuffer"})})})}}}(),function(){"use strict";function a(a,b,c){var d=a.length;if(1===d)return a[0];var e,f,g,h,i,j,k,l,m,n=c.data,o=c.width,p=c.height,q=new Uint32Array(a.length),r=new Float32Array(b);for(e=0;p>e;e+=1)for(m=e*o,f=0;o>f;f+=1)for(j=4*(m+f),k=0,g=0;d>g;g+=1)h=a[g],em&&n>0&&q.data.set(b.utils.flipImage(q.data,q.width,q.height,{flipx:!0,flipy:!1,block_size:4})),r.data.set(b.utils.nearestNeighbor(q.data,q.width,q.height,o,p,{block_size:4})),j=Math.max(j,o),k=Math.max(k,p),i.push(r)}),a(i,g.blend_ratios,c.createImageData(j,k))}}},getIntensityValue:function(a,b,c,d){a=void 0===a?this.position.xspace:a,b=void 0===b?this.position.yspace:b,c=void 0===c?this.position.zspace:c,d=void 0===d?this.current_time:d;var e=this,f=[];return e.volumes.forEach(function(e){(0>a||a>e.data.xspace.space_length||0>b||b>e.data.yspace.space_length||0>c||c>e.data.zspace.space_length)&&f.push(0);var g,h,i=e.data.slice("zspace",c,d),j=i.data;"xspace"===i.width_space.name?(g=a,h=b):(g=b,h=c),f.push(j[(i.height_space.space_length-h-1)*i.width+g])}),f.reduce(function(a,b,c){return a+b*e.blend_ratios[c]},0)}};f.forEach(function(a){g.volumes.push(a),g.blend_ratios.push(1/f.length)}),BrainBrowser.utils.isFunction(e)&&e(g)}}(); \ No newline at end of file diff --git a/build/brainbrowser-2.2.0/workers/deindex.worker.js b/build/brainbrowser-2.2.0/workers/deindex.worker.js new file mode 100644 index 00000000..3bd8fd13 --- /dev/null +++ b/build/brainbrowser-2.2.0/workers/deindex.worker.js @@ -0,0 +1,31 @@ +/* +* BrainBrowser: Web-based Neurological Visualization Tools +* (https://brainbrowser.cbrain.mcgill.ca) +* +* Copyright (C) 2011 +* The Royal Institution for the Advancement of Learning +* McGill University +* +* This program is free software: you can redistribute it and/or modify +* it under the terms of the GNU Affero General Public License as +* published by the Free Software Foundation, either version 3 of the +* License, or (at your option) any later version. +* +* This program is distributed in the hope that it will be useful, +* but WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +* GNU Affero General Public License for more details. +* +* You should have received a copy of the GNU Affero General Public License +* along with this program. If not, see . +*/ + +/* +* BrainBrowser v2.2.0 +* +* Author: Tarek Sherif (http://tareksherif.ca/) +* Author: Nicolas Kassis +* Author: Paul Mougel +* +* three.js (c) 2010-2014 three.js authors, used under the MIT license*/ +!function(){"use strict";function a(a,c,d,e){a=a||[],c=c||[],d=d||[],e=e;var f,g,h,i,j,k,l,m,n,o,p=a.length,q=3*p,r=4*p,s=d.length>0,t={},u={};4===e.length&&(j=!0,f=e[0],g=e[1],h=e[2],i=e[3]);var v=new Float32Array(q),w=s?new Float32Array(q):new Float32Array,x=new Float32Array(r);for(k=0,l=a.length;l>k;k++)b(t,c[3*a[k]],c[3*a[k]+1],c[3*a[k]+2]);for(u.x=t.minX+(t.maxX-t.minX)/2,u.y=t.minY+(t.maxY-t.minY)/2,u.z=t.minZ+(t.maxZ-t.minZ)/2,u.bounding_box=t,k=0;p>k;k+=3)m=3*k,n=4*k,v[m]=c[3*a[k]]-u.x,v[m+1]=c[3*a[k]+1]-u.y,v[m+2]=c[3*a[k]+2]-u.z,v[m+3]=c[3*a[k+1]]-u.x,v[m+4]=c[3*a[k+1]+1]-u.y,v[m+5]=c[3*a[k+1]+2]-u.z,v[m+6]=c[3*a[k+2]]-u.x,v[m+7]=c[3*a[k+2]+1]-u.y,v[m+8]=c[3*a[k+2]+2]-u.z,s&&(w[m]=d[3*a[k]],w[m+1]=d[3*a[k]+1],w[m+2]=d[3*a[k]+2],w[m+3]=d[3*a[k+1]],w[m+4]=d[3*a[k+1]+1],w[m+5]=d[3*a[k+1]+2],w[m+6]=d[3*a[k+2]],w[m+7]=d[3*a[k+2]+1],w[m+8]=d[3*a[k+2]+2]),j?(x[n]=f,x[n+1]=g,x[n+2]=h,x[n+3]=i,x[n+4]=f,x[n+5]=g,x[n+6]=h,x[n+7]=i,x[n+8]=f,x[n+9]=g,x[n+10]=h,x[n+11]=i):(x[n]=e[4*a[k]],x[n+1]=e[4*a[k]+1],x[n+2]=e[4*a[k]+2],x[n+3]=e[4*a[k]+3],x[n+4]=e[4*a[k+1]],x[n+5]=e[4*a[k+1]+1],x[n+6]=e[4*a[k+1]+2],x[n+7]=e[4*a[k+1]+3],x[n+8]=e[4*a[k+2]],x[n+9]=e[4*a[k+2]+1],x[n+10]=e[4*a[k+2]+2],x[n+11]=e[4*a[k+2]+3]);return o={centroid:u,unindexed:{position:v,normal:w,color:x}}}function b(a,b,c,d){(!a.minX||a.minX>b)&&(a.minX=b),(!a.maxX||a.maxXc)&&(a.minY=c),(!a.maxY||a.maxYd)&&(a.minZ=d),(!a.maxZ||a.maxZc;c++)e=h[c],f=a(h[c].indices,i,j,e.color||k),e.centroid=f.centroid,e.unindexed=f.unindexed;self.postMessage(g)})}(); \ No newline at end of file diff --git a/build/brainbrowser-2.2.0/workers/freesurferasc.intensity.worker.js b/build/brainbrowser-2.2.0/workers/freesurferasc.intensity.worker.js new file mode 100644 index 00000000..d2389f62 --- /dev/null +++ b/build/brainbrowser-2.2.0/workers/freesurferasc.intensity.worker.js @@ -0,0 +1,31 @@ +/* +* BrainBrowser: Web-based Neurological Visualization Tools +* (https://brainbrowser.cbrain.mcgill.ca) +* +* Copyright (C) 2011 +* The Royal Institution for the Advancement of Learning +* McGill University +* +* This program is free software: you can redistribute it and/or modify +* it under the terms of the GNU Affero General Public License as +* published by the Free Software Foundation, either version 3 of the +* License, or (at your option) any later version. +* +* This program is distributed in the hope that it will be useful, +* but WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +* GNU Affero General Public License for more details. +* +* You should have received a copy of the GNU Affero General Public License +* along with this program. If not, see . +*/ + +/* +* BrainBrowser v2.2.0 +* +* Author: Tarek Sherif (http://tareksherif.ca/) +* Author: Nicolas Kassis +* Author: Paul Mougel +* +* three.js (c) 2010-2014 three.js authors, used under the MIT license*/ +!function(){"use strict";function a(a){var b,c,d,e,f,g,h;for(a=a.trim(),c=a.split("\n"),f=c.length,b=new Float32Array(f),d=parseFloat(c[0].trim().split(/\s+/)[4]),b[0]=d,g=d,h=d,e=1;f>e;e++)d=parseFloat(c[e].trim().split(/\s+/)[4]),b[e]=d,g=Math.min(g,d),h=Math.max(h,d);return{values:b,min:g,max:h}}self.addEventListener("message",function(b){var c=b.data,d=c.data;self.postMessage(a(d))})}(); \ No newline at end of file diff --git a/build/brainbrowser-2.2.0/workers/freesurferasc.worker.js b/build/brainbrowser-2.2.0/workers/freesurferasc.worker.js new file mode 100644 index 00000000..e5922a40 --- /dev/null +++ b/build/brainbrowser-2.2.0/workers/freesurferasc.worker.js @@ -0,0 +1,31 @@ +/* +* BrainBrowser: Web-based Neurological Visualization Tools +* (https://brainbrowser.cbrain.mcgill.ca) +* +* Copyright (C) 2011 +* The Royal Institution for the Advancement of Learning +* McGill University +* +* This program is free software: you can redistribute it and/or modify +* it under the terms of the GNU Affero General Public License as +* published by the Free Software Foundation, either version 3 of the +* License, or (at your option) any later version. +* +* This program is distributed in the hope that it will be useful, +* but WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +* GNU Affero General Public License for more details. +* +* You should have received a copy of the GNU Affero General Public License +* along with this program. If not, see . +*/ + +/* +* BrainBrowser v2.2.0 +* +* Author: Tarek Sherif (http://tareksherif.ca/) +* Author: Nicolas Kassis +* Author: Paul Mougel +* +* three.js (c) 2010-2014 three.js authors, used under the MIT license*/ +!function(){"use strict";function a(a){var b,c,d,e,f,g,h,i,j={};for(a=a.split("\n"),d=a[1].trim().split(/\s+/),e=parseInt(d[0],10),f=parseInt(d[1],10),b=new Float32Array(3*e),c=new Uint32Array(3*f),h=0;e>h;h++)g=a[h+2].trim().split(/\s+/),i=3*h,b[i]=parseFloat(g[0]),b[i+1]=parseFloat(g[1]),b[i+2]=parseFloat(g[2]);for(h=0;f>h;h++)g=a[h+e+2].trim().split(/\s+/),i=3*h,c[i]=parseInt(g[0],10),c[i+1]=parseInt(g[1],10),c[i+2]=parseInt(g[2],10);return j.type="polygon",j.vertices=b,j.shapes=[{indices:c}],j}self.addEventListener("message",function(b){self.postMessage(a(b.data.data))})}(); \ No newline at end of file diff --git a/build/brainbrowser-2.2.0/workers/freesurferbin.intensity.worker.js b/build/brainbrowser-2.2.0/workers/freesurferbin.intensity.worker.js new file mode 100644 index 00000000..53ab17a3 --- /dev/null +++ b/build/brainbrowser-2.2.0/workers/freesurferbin.intensity.worker.js @@ -0,0 +1,31 @@ +/* +* BrainBrowser: Web-based Neurological Visualization Tools +* (https://brainbrowser.cbrain.mcgill.ca) +* +* Copyright (C) 2011 +* The Royal Institution for the Advancement of Learning +* McGill University +* +* This program is free software: you can redistribute it and/or modify +* it under the terms of the GNU Affero General Public License as +* published by the Free Software Foundation, either version 3 of the +* License, or (at your option) any later version. +* +* This program is distributed in the hope that it will be useful, +* but WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +* GNU Affero General Public License for more details. +* +* You should have received a copy of the GNU Affero General Public License +* along with this program. If not, see . +*/ + +/* +* BrainBrowser v2.2.0 +* +* Author: Tarek Sherif (http://tareksherif.ca/) +* Author: Nicolas Kassis +* Author: Paul Mougel +* +* three.js (c) 2010-2014 three.js authors, used under the MIT license*/ +!function(){"use strict";function a(a){var c,d,e,f,g,h,i=new DataView(a),j=0,k=b(i);if(j+=3,16777215!==k)return{error:!0,error_message:"Unrecognized file format."};if(d=i.getUint32(j),j+=8,e=i.getUint32(j),j+=4,1!==e)return{error:!0,error_message:"Only one value per vertex supported. Number of values: "+e};for(c=new Float32Array(d),c[0]=f=g=i.getFloat32(j),j+=4,h=1;d>h;h++)c[h]=i.getFloat32(j),f=Math.min(f,c[h]),g=Math.max(g,c[h]),j+=4;return{values:c,min:f,max:g}}function b(a){var b,c=0;for(b=0;3>b;b++)c+=a.getUint8(b)<<8*(3-b-1);return c}self.addEventListener("message",function(b){self.postMessage(a(b.data.data))})}(); \ No newline at end of file diff --git a/build/brainbrowser-2.2.0/workers/freesurferbin.worker.js b/build/brainbrowser-2.2.0/workers/freesurferbin.worker.js new file mode 100644 index 00000000..b46bf36c --- /dev/null +++ b/build/brainbrowser-2.2.0/workers/freesurferbin.worker.js @@ -0,0 +1,31 @@ +/* +* BrainBrowser: Web-based Neurological Visualization Tools +* (https://brainbrowser.cbrain.mcgill.ca) +* +* Copyright (C) 2011 +* The Royal Institution for the Advancement of Learning +* McGill University +* +* This program is free software: you can redistribute it and/or modify +* it under the terms of the GNU Affero General Public License as +* published by the Free Software Foundation, either version 3 of the +* License, or (at your option) any later version. +* +* This program is distributed in the hope that it will be useful, +* but WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +* GNU Affero General Public License for more details. +* +* You should have received a copy of the GNU Affero General Public License +* along with this program. If not, see . +*/ + +/* +* BrainBrowser v2.2.0 +* +* Author: Tarek Sherif (http://tareksherif.ca/) +* Author: Nicolas Kassis +* Author: Paul Mougel +* +* three.js (c) 2010-2014 three.js authors, used under the MIT license*/ +!function(){"use strict";function a(a){var c,d,e,f,g,h,i=new DataView(a),j=0,k=b(i);if(j+=3,16777214!==k)return{error:!0,error_message:"Only triangle meshes supported."};for(;10!==i.getUint8(j)||10!==i.getUint8(j+1);)j++;for(j+=2,d=i.getUint32(j),j+=4,f=3*i.getUint32(j),j+=4,c=new Float32Array(3*d),e=new Uint32Array(f),g=0;d>g;g++)h=3*g,c[h]=i.getFloat32(j),j+=4,c[h+1]=i.getFloat32(j),j+=4,c[h+2]=i.getFloat32(j),j+=4;for(g=0;f>g;g++)e[g]=i.getUint32(j),j+=4;return{vertices:c,shapes:[{indices:e}]}}function b(a){var b,c=0;for(b=0;3>b;b++)c+=a.getUint8(b)<<8*(3-b-1);return c}self.addEventListener("message",function(b){self.postMessage(a(b.data.data))})}(); \ No newline at end of file diff --git a/build/brainbrowser-2.2.0/workers/json.worker.js b/build/brainbrowser-2.2.0/workers/json.worker.js new file mode 100644 index 00000000..5af5f52c --- /dev/null +++ b/build/brainbrowser-2.2.0/workers/json.worker.js @@ -0,0 +1,31 @@ +/* +* BrainBrowser: Web-based Neurological Visualization Tools +* (https://brainbrowser.cbrain.mcgill.ca) +* +* Copyright (C) 2011 +* The Royal Institution for the Advancement of Learning +* McGill University +* +* This program is free software: you can redistribute it and/or modify +* it under the terms of the GNU Affero General Public License as +* published by the Free Software Foundation, either version 3 of the +* License, or (at your option) any later version. +* +* This program is distributed in the hope that it will be useful, +* but WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +* GNU Affero General Public License for more details. +* +* You should have received a copy of the GNU Affero General Public License +* along with this program. If not, see . +*/ + +/* +* BrainBrowser v2.2.0 +* +* Author: Tarek Sherif (http://tareksherif.ca/) +* Author: Nicolas Kassis +* Author: Paul Mougel +* +* three.js (c) 2010-2014 three.js authors, used under the MIT license*/ +!function(){"use strict";function a(a){var e={name:a.name,type:a.type,shapes:[]};return e.vertices=b(a.vertices),a.colors=a.colors||a.color,a.colors&&(e.colors=b(a.colors),(e.vertices.length===e.colors.length||3===e.colors.length)&&(e.colors=c(e.colors))),a.normals&&(e.normals=b(a.normals)),void 0===a.shapes&&(a.shapes=[]),a.indices&&a.shapes.push({indices:a.indices}),a.shapes.forEach(function(a){var c=b(a.indices);a.one_indexed&&d(c),a.color=a.color||a.colors,Array.isArray(a.color)&&3===a.color.length&&a.color.push(1),e.shapes.push({name:a.name,indices:c,color:a.color})}),e}function b(a,c){if(!Array.isArray(a))return[a];if(c=c||0,c===a.length)return[];var d,e,f=[];for(d=0,e=a.length;e>d;d++)f.push.apply(f,b(a[d]));return f}function c(a){var b,c,d,e;for(b=new Float32Array(4*a.length/3),c=d=0,e=a.length;e>c;)b[d++]=a[c++],b[d++]=a[c++],b[d++]=a[c++],b[d++]=1;return b}function d(a){var b,c;for(b=0,c=a.length;c>b;b++)a[b]=a[b]-1}self.addEventListener("message",function(b){self.postMessage(a(JSON.parse(b.data.data)))})}(); \ No newline at end of file diff --git a/build/brainbrowser-2.2.0/workers/mniobj.intensity.worker.js b/build/brainbrowser-2.2.0/workers/mniobj.intensity.worker.js new file mode 100644 index 00000000..6acb3776 --- /dev/null +++ b/build/brainbrowser-2.2.0/workers/mniobj.intensity.worker.js @@ -0,0 +1,31 @@ +/* +* BrainBrowser: Web-based Neurological Visualization Tools +* (https://brainbrowser.cbrain.mcgill.ca) +* +* Copyright (C) 2011 +* The Royal Institution for the Advancement of Learning +* McGill University +* +* This program is free software: you can redistribute it and/or modify +* it under the terms of the GNU Affero General Public License as +* published by the Free Software Foundation, either version 3 of the +* License, or (at your option) any later version. +* +* This program is distributed in the hope that it will be useful, +* but WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +* GNU Affero General Public License for more details. +* +* You should have received a copy of the GNU Affero General Public License +* along with this program. If not, see . +*/ + +/* +* BrainBrowser v2.2.0 +* +* Author: Tarek Sherif (http://tareksherif.ca/) +* Author: Nicolas Kassis +* Author: Paul Mougel +* +* three.js (c) 2010-2014 three.js authors, used under the MIT license*/ +!function(){"use strict";function a(a){var b,c,d,e,f={};for(f.values=a.trim().split(/\s+/).map(parseFloat),d=f.values[0],e=f.values[0],b=1,c=f.values.length;c>b;b++)d=Math.min(d,f.values[b]),e=Math.max(e,f.values[b]);return f.min=d,f.max=e,f}self.addEventListener("message",function(b){var c=b.data,d=c.data;self.postMessage(a(d))})}(); \ No newline at end of file diff --git a/build/brainbrowser-2.2.0/workers/mniobj.worker.js b/build/brainbrowser-2.2.0/workers/mniobj.worker.js new file mode 100644 index 00000000..65d68693 --- /dev/null +++ b/build/brainbrowser-2.2.0/workers/mniobj.worker.js @@ -0,0 +1,31 @@ +/* +* BrainBrowser: Web-based Neurological Visualization Tools +* (https://brainbrowser.cbrain.mcgill.ca) +* +* Copyright (C) 2011 +* The Royal Institution for the Advancement of Learning +* McGill University +* +* This program is free software: you can redistribute it and/or modify +* it under the terms of the GNU Affero General Public License as +* published by the Free Software Foundation, either version 3 of the +* License, or (at your option) any later version. +* +* This program is distributed in the hope that it will be useful, +* but WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +* GNU Affero General Public License for more details. +* +* You should have received a copy of the GNU Affero General Public License +* along with this program. If not, see . +*/ + +/* +* BrainBrowser v2.2.0 +* +* Author: Tarek Sherif (http://tareksherif.ca/) +* Author: Nicolas Kassis +* Author: Paul Mougel +* +* three.js (c) 2010-2014 three.js authors, used under the MIT license*/ +!function(){"use strict";function a(a,l){j=a.trim().split(/\s+/).reverse(),k=j.length-1;var m,n,o,p,q,r,s,t=[],u=l.split,v={},w=i();if(v.split=!1,v.type="P"===w?"polygon":"L"===w?"line":w,"polygon"===v.type)b(v),v.num_vertices=parseInt(i(),10),c(v),d(v),v.nitems=parseInt(i(),10);else{if("line"!==v.type)return v.error=!0,void(v.error_message='Invalid MNI Object class: must be "polygon" or "line"');b(v),v.num_vertices=parseInt(i(),10),c(v),v.nitems=parseInt(i(),10)}if(e(v),f(v),g(v),"polygon"===v.type)u&&(v.split=!0,h(v));else if("line"===v.type){for(r=v.indices,s=v.end_indices,q=v.nitems,m=0;q>m;m++){for(o=0===m?0:s[m-1],t.push(r[o]),p=s[m],n=o+1;p-1>n;n++)t.push(r[n]),t.push(r[n]);t.push(r[p-1])}v.indices=t}return v}function b(a){"polygon"===a.type?a.surface_properties={ambient:parseFloat(i()),diffuse:parseFloat(i()),specular_reflectance:parseFloat(i()),specular_scattering:parseFloat(i()),transparency:parseFloat(i())}:"line"===a.type&&(a.surfaceProperties={width:i()})}function c(a){var b,c=3*a.num_vertices,d=new Float32Array(c);for(b=0;c>b;b++)d[b]=parseFloat(i());a.vertices=d}function d(a){var b,c=3*a.num_vertices,d=new Float32Array(c);for(b=0;c>b;b++)d[b]=parseFloat(i());a.normals=d}function e(a){var b,c,d,e=parseInt(i(),10);if(0===e)for(b=new Float32Array(4),c=0;4>c;c++)b[c]=parseFloat(i());else if(1===e)for(d=4*a.num_polygons,b=new Float32Array(d),c=0;d>c;c++)b[c]=parseFloat(i());else if(2===e)for(d=4*a.num_vertices,b=new Float32Array(d),c=0;d>c;c++)b[c]=parseFloat(i());else a.error=!0,a.error_message="Invalid color flag: "+e;a.color_flag=e,a.colors=b}function f(a){var b,c=a.nitems,d=new Uint32Array(c);for(b=0;c>b;b++)d[b]=parseInt(i(),10);a.end_indices=d}function g(a){var b,c=k+1,d=new Float32Array(c);for(b=0;c>b;b++)d[b]=parseInt(i(),10);a.indices=d}function h(a){var b=a.indices.length;a.left={indices:Array.prototype.slice.call(a.indices,0,b/2)},a.right={indices:Array.prototype.slice.call(a.indices,b/2)}}function i(){return j[k--]}var j,k;self.addEventListener("message",function(b){var c=b.data,d=a(c.data,c.options)||{error:!0,error_message:"Error parsing data."},e={type:d.type,vertices:d.vertices,normals:d.normals,colors:d.colors,surface_properties:d.surface_properties,split:d.split,error:d.error,error_message:d.error_message};e.shapes=e.split?[{indices:d.left.indices},{indices:d.right.indices}]:[{indices:d.indices}],self.postMessage(e)})}(); \ No newline at end of file diff --git a/build/brainbrowser-2.2.0/workers/wavefrontobj.worker.js b/build/brainbrowser-2.2.0/workers/wavefrontobj.worker.js new file mode 100644 index 00000000..d8dc78f8 --- /dev/null +++ b/build/brainbrowser-2.2.0/workers/wavefrontobj.worker.js @@ -0,0 +1,31 @@ +/* +* BrainBrowser: Web-based Neurological Visualization Tools +* (https://brainbrowser.cbrain.mcgill.ca) +* +* Copyright (C) 2011 +* The Royal Institution for the Advancement of Learning +* McGill University +* +* This program is free software: you can redistribute it and/or modify +* it under the terms of the GNU Affero General Public License as +* published by the Free Software Foundation, either version 3 of the +* License, or (at your option) any later version. +* +* This program is distributed in the hope that it will be useful, +* but WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +* GNU Affero General Public License for more details. +* +* You should have received a copy of the GNU Affero General Public License +* along with this program. If not, see . +*/ + +/* +* BrainBrowser v2.2.0 +* +* Author: Tarek Sherif (http://tareksherif.ca/) +* Author: Nicolas Kassis +* Author: Paul Mougel +* +* three.js (c) 2010-2014 three.js authors, used under the MIT license*/ +!function(){"use strict";function a(a){var b,c,d,e,f,g,h,i,j,k,l,m,n,o=[],p=[],q=[],r={};for(a=a.split("\n"),r.shapes=[],b={faces:[],indices:[],texture_indices:[],normal_indices:[]},r.shapes.push(b),i=0,l=a.length;l>i;i++)if(f=a[i].replace(/^\s+/,"").replace(/\s+$/,"").split(/\s+/),g=f[0],h=f.length,!g.match("#")||""===f)switch(g){case"o":case"g":b={name:f[1],faces:[],indices:[],texture_indices:[],normal_indices:[]},r.shapes.push(b);break;case"v":o.push(parseFloat(f[1])),o.push(parseFloat(f[2])),o.push(parseFloat(f[3]));break;case"vt":for(j=1;h>j;j++)p.push(parseFloat(f[j]));break;case"vn":q.push(parseFloat(f[1])),q.push(parseFloat(f[2])),q.push(parseFloat(f[3]));break;case"f":m=[],c=b.indices,d=b.texture_indices,e=b.normal_indices;var s=f[1].split("/");for(k=2;h-1>k;k++)m.push(parseInt(s[0],10)-1),c.push(parseInt(s[0],10)-1),d.push(parseInt(s[1],10)-1),s[2]&&e.push(parseInt(s[2],10)-1),n=f[k].split("/"),m.push(parseInt(n[0],10)-1),c.push(parseInt(n[0],10)-1),d.push(parseInt(n[1],10)-1),n[2]&&e.push(parseInt(n[2],10)-1),n=f[k+1].split("/"),m.push(parseInt(n[0],10)-1),c.push(parseInt(n[0],10)-1),d.push(parseInt(n[1],10)-1),n[2]&&e.push(parseInt(n[2],10)-1);b.faces.push(m)}return r.type="polygon",r.vertices=o,r.normals=q,r.texture_coords=p,r}self.addEventListener("message",function(b){self.postMessage(a(b.data.data))})}(); \ No newline at end of file diff --git a/build/brainbrowser-2.2.0/workers/wireframe.worker.js b/build/brainbrowser-2.2.0/workers/wireframe.worker.js new file mode 100644 index 00000000..8642b83c --- /dev/null +++ b/build/brainbrowser-2.2.0/workers/wireframe.worker.js @@ -0,0 +1,31 @@ +/* +* BrainBrowser: Web-based Neurological Visualization Tools +* (https://brainbrowser.cbrain.mcgill.ca) +* +* Copyright (C) 2011 +* The Royal Institution for the Advancement of Learning +* McGill University +* +* This program is free software: you can redistribute it and/or modify +* it under the terms of the GNU Affero General Public License as +* published by the Free Software Foundation, either version 3 of the +* License, or (at your option) any later version. +* +* This program is distributed in the hope that it will be useful, +* but WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +* GNU Affero General Public License for more details. +* +* You should have received a copy of the GNU Affero General Public License +* along with this program. If not, see . +*/ + +/* +* BrainBrowser v2.2.0 +* +* Author: Tarek Sherif (http://tareksherif.ca/) +* Author: Nicolas Kassis +* Author: Paul Mougel +* +* three.js (c) 2010-2014 three.js authors, used under the MIT license*/ +!function(){"use strict";function a(a,b){var c,d,e,f,g,h=new Float32Array(2*a.length),i=new Float32Array(2*b.length),j=a.length/3;for(c=0;j>c;c+=3)e=3*c,f=4*c,d=2*e,g=2*f,h[d]=a[e],h[d+1]=a[e+1],h[d+2]=a[e+2],h[d+3]=a[e+3],h[d+4]=a[e+4],h[d+5]=a[e+5],h[d+6]=a[e+3],h[d+7]=a[e+4],h[d+8]=a[e+5],h[d+9]=a[e+6],h[d+10]=a[e+7],h[d+11]=a[e+8],h[d+12]=a[e+6],h[d+13]=a[e+7],h[d+14]=a[e+8],h[d+15]=a[e],h[d+16]=a[e+1],h[d+17]=a[e+2],i[g]=b[f],i[g+1]=b[f+1],i[g+2]=b[f+2],i[g+3]=b[f+3],i[g+4]=b[f+4],i[g+5]=b[f+5],i[g+6]=b[f+6],i[g+7]=b[f+7],i[g+8]=b[f+4],i[g+9]=b[f+5],i[g+10]=b[f+6],i[g+11]=b[f+7],i[g+12]=b[f+8],i[g+13]=b[f+9],i[g+14]=b[f+10],i[g+15]=b[f+11],i[g+16]=b[f+8],i[g+17]=b[f+9],i[g+18]=b[f+10],i[g+19]=b[f+11],i[g+20]=b[f],i[g+21]=b[f+1],i[g+22]=b[f+2],i[g+23]=b[f+3];return{positions:h,colors:i}}self.addEventListener("message",function(b){var c=b.data;self.postMessage(a(c.positions,c.colors))})}(); \ No newline at end of file diff --git a/package.json b/package.json index 43bf7ebb..8b734d7d 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "brainbrowser", - "version": "2.1.1", + "version": "2.2.0", "license": "GNU Affero GPL 3.0", "devDependencies": { "grunt": "~0.4.1", diff --git a/release/brainbrowser-2.2.0.tar.gz b/release/brainbrowser-2.2.0.tar.gz new file mode 100644 index 0000000000000000000000000000000000000000..df722f2bb03eabf70c504a1163beb2c719f901dd GIT binary patch literal 151159 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 z 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 literal 0 HcmV?d00001 From 58dfeb458719da06db780104e4aa341e700eb2e5 Mon Sep 17 00:00:00 2001 From: Tarek Sherif Date: Mon, 24 Nov 2014 14:38:06 -0500 Subject: [PATCH 2/2] Fixed banner --- Gruntfile.js | 2 +- .../brainbrowser.surface-viewer.min.js | 3 ++- .../brainbrowser.volume-viewer.min.js | 3 ++- .../workers/deindex.worker.js | 3 ++- .../workers/freesurferasc.intensity.worker.js | 3 ++- .../workers/freesurferasc.worker.js | 3 ++- .../workers/freesurferbin.intensity.worker.js | 3 ++- .../workers/freesurferbin.worker.js | 3 ++- .../brainbrowser-2.2.0/workers/json.worker.js | 3 ++- .../workers/mniobj.intensity.worker.js | 3 ++- .../workers/mniobj.worker.js | 3 ++- .../workers/wavefrontobj.worker.js | 3 ++- .../workers/wireframe.worker.js | 3 ++- release/brainbrowser-2.2.0.tar.gz | Bin 151159 -> 151160 bytes 14 files changed, 25 insertions(+), 13 deletions(-) diff --git a/Gruntfile.js b/Gruntfile.js index 729f0cce..d361f4d3 100644 --- a/Gruntfile.js +++ b/Gruntfile.js @@ -68,7 +68,7 @@ module.exports = function(grunt) { "* Author: Nicolas Kassis\n" + "* Author: Paul Mougel\n" + "*\n" + - "* three.js (c) 2010-2014 three.js authors, used under the MIT license" + + "* three.js (c) 2010-2014 three.js authors, used under the MIT license\n" + "*/\n" }, surface: { diff --git a/build/brainbrowser-2.2.0/brainbrowser.surface-viewer.min.js b/build/brainbrowser-2.2.0/brainbrowser.surface-viewer.min.js index 69f2c80b..10ee9aba 100644 --- a/build/brainbrowser-2.2.0/brainbrowser.surface-viewer.min.js +++ b/build/brainbrowser-2.2.0/brainbrowser.surface-viewer.min.js @@ -27,7 +27,8 @@ * Author: Nicolas Kassis * Author: Paul Mougel * -* three.js (c) 2010-2014 three.js authors, used under the MIT license*/ +* three.js (c) 2010-2014 three.js authors, used under the MIT license +*/ !function(){"use strict";var a="2.2.0";a=a.indexOf("BRAINBROWSER_VERSION")>0?"D.E.V":a,window.BrainBrowser={version:a},window.requestAnimationFrame=window.requestAnimationFrame||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame||window.oRequestAnimationFrame||window.msRequestAnimationFrame||function(a){return window.setTimeout(a,1e3/60)},window.cancelAnimationFrame=window.cancelAnimationFrame||function(a){window.clearTimeout(a)}}(),function(){"use strict";function a(b,c,d,e){return c>d?e(b):void Object.keys(b).forEach(function(f){a(b[f],c+1,d,e)})}BrainBrowser.createTreeStore=function(){var b={};return{set:function(){var a,c,d,e,f=arguments[arguments.length-1],g=Array.prototype.slice.call(arguments,0,arguments.length-1),h=b;for(c=0,d=g.length-1;d>c;c++){if(a=g[c],h[a]&&"object"!=typeof h[a])throw e="Hash key '["+g.slice(0,c+1).join("][")+"]' has already been set to a non-object value.\nCannot set '["+g.join("][")+"]'",BrainBrowser.events.triggerEvent("error",{message:e}),new Error(e);h[a]||(h[a]={}),h=h[a]}a=g[c],h[a]=f},get:function(){var a,c,d,e=Array.prototype.slice.call(arguments),f=b;if(0===e.length)return b;for(c=0,d=e.length-1;d>c;c++){if(a=e[c],void 0===f[a])return null;f=f[a]}return a=e[c],void 0!==f[a]?f[a]:null},remove:function(){var a,c,d,e,f=Array.prototype.slice.call(arguments),g=b;for(c=0,d=f.length-1;d>c;c++){if(a=f[c],void 0===g[a])return null;g=g[a]}return a=f[c],e=g[a],g[a]=void 0,e},reset:function(a){a=a&&"object"==typeof a?a:{},b=a},forEach:function(c,d){c=c>0?c:1,a(b,1,c,d)}}}}(),function(){"use strict";BrainBrowser.createColorMap=function(a,b){function c(a,b,c,d,e,f,g){var h;return(b>a||a>c)&&!e?-1:(h=Math.floor(Math.max(0,Math.min((a-b)*d,g-1))),f&&(h=g-1-h),h*=4)}function d(a,b,c){var d,e,f,g=document.createElement("canvas"),h=new Array(256);for(g.width=256,g.height=c,d=0;256>d;d++)h[d]=d;for(f=r.scale,r.scale=255,a=r.mapColors(h),r.scale=f,e=g.getContext("2d"),d=0;256>d;d++)e.fillStyle="rgb("+Math.floor(a[4*d])+", "+Math.floor(a[4*d+1])+", "+Math.floor(a[4*d+2])+")",e.fillRect(d,0,1,b);return g}b=b||{};var e,f,g,h,i,j,k,l,m=void 0===b.clamp?!0:b.clamp,n=b.flip||!1,o=b.scale||1,p=b.contrast||1,q=b.brightness||0;if(a)for(f=a.trim().split(/\n/),e=new Float32Array(4*f.length),k=0,i=0,g=f.length;g>i;i++)if(l=f[i].trim().split(/\s+/).slice(0,4),h=l.length,!(3>h)){for(j=0;h>j;j++)e[k+j]=parseFloat(l[j]);4>h&&(e[k+3]=1),k+=4}var r={colors:e,clamp:m,flip:n,scale:o,contrast:p,brightness:q,mapColors:function(a,b){b=b||{};var d,e,f,g,h,i,j=void 0===b.min?0:b.min,k=void 0===b.max?255:b.max,l=b.default_colors||[0,0,0,1],m=b.destination||new Float32Array(4*a.length),n=r.colors,o=r.colors.length/4,p=void 0===b.scale?r.scale:b.scale,q=void 0===b.clamp?r.clamp:b.clamp,s=void 0===b.flip?r.flip:b.flip,t=void 0===b.brightness?r.brightness:b.brightness,u=void 0===b.contrast?r.contrast:b.contrast,v=4===l.length?0:1,w=k-j,x=o/w;for(t*=p,u*=p,e=0,h=a.length;h>e;e++)d=a[e],f=4*e,i=c(d,j,k,x,q,s,o),0>i?(g=f*v,m[f]=u*l[g]+t,m[f+1]=u*l[g+1]+t,m[f+2]=u*l[g+2]+t,m[f+3]=p*l[g+3]):(m[f]=u*n[i]+t,m[f+1]=u*n[i+1]+t,m[f+2]=u*n[i+2]+t,m[f+3]=p*n[i+3]);return m},colorFromValue:function(a,b){b=b||{};var d,e=b.hex||!1,f=void 0===b.min?0:b.min,g=void 0===b.max?255:b.max,h=void 0===b.scale?r.scale:b.scale,i=void 0===b.brightness?r.brightness:b.brightness,j=void 0===b.contrast?r.contrast:b.contrast,k=g-f,l=r.colors.length/4,m=l/k,n=c(a,f,g,m,r.clamp,r.flip,l);return d=n>=0?Array.prototype.slice.call(r.colors,n,n+4):[0,0,0,1],d[0]=Math.max(0,Math.min(j*d[0]+i,1)),d[1]=Math.max(0,Math.min(j*d[1]+i,1)),d[2]=Math.max(0,Math.min(j*d[2]+i,1)),e?(d[0]=Math.floor(255*d[0]),d[1]=Math.floor(255*d[1]),d[2]=Math.floor(255*d[2]),d[3]=Math.floor(255*d[3]),d[0]=("0"+d[0].toString(16)).slice(-2),d[1]=("0"+d[1].toString(16)).slice(-2),d[2]=("0"+d[2].toString(16)).slice(-2),d=d.slice(0,3).join("")):(d[0]=d[0]*h,d[1]=d[1]*h,d[2]=d[2]*h,d[3]=d[3]*h),d},createElement:function(a,b){var c,e,f=r.colors,g=b-a;return c=d(f,20,40,n),e=c.getContext("2d"),e.fillStyle="#FFA000",e.fillRect(.5,20,1,10),e.fillText(a.toPrecision(3),.5,40),e.fillRect(c.width/4,20,1,10),e.fillText((a+.25*g).toPrecision(3),.25*c.width,40),e.fillRect(c.width/2,20,1,10),e.fillText((a+.5*g).toPrecision(3),.5*c.width,40),e.fillRect(3*c.width/4,20,1,10),e.fillText((a+.75*g).toPrecision(3),.75*c.width,40),e.fillRect(c.width-.5,20,1,10),e.fillText(b.toPrecision(3),c.width-20,40),c}};return r}}(),function(){"use strict";var a=BrainBrowser.createTreeStore();BrainBrowser.config={set:function(b,c){b=b||"";var d=b.split(".");d.push(c),a.set.apply(a,d)},get:function(b){b=b||"";var c=b.split(".");return a.get.apply(a,c)}}}(),function(){"use strict";function a(a,b){try{a.call(b.target,b)}catch(c){console.error("Error in event handler for: ",b.name),console.error(c.stack||c.message||c)}}var b=["eventmodelcleanup"];BrainBrowser.events={unpropagatedEvent:function(a){b.push(a)},addEventModel:function(c){var d=[],e={};c.addEventListener=function(a,b){d[a]||(d[a]=[]),d[a].push(b)},c.triggerEvent=function(e,f){var g=this,h=c.directPropagationTargets(e);f=f||{},f.name=e,f.target=g,d[e]&&d[e].forEach(function(b){a(b,f)}),d["*"]&&d["*"].forEach(function(b){a(b,f)}),-1===b.indexOf(e)&&(h.forEach(function(a){a.triggerEvent.call(g,e,f)}),0===h.length&&c!==BrainBrowser.events&&BrainBrowser.events.triggerEvent.call(g,e,f))},c.propagateEventTo=function(a,b){if(!BrainBrowser.utils.isFunction(b.allPropagationTargets))throw new Error("Propagation target doesn't seem to have an event model.");if(c===BrainBrowser.events||-1!==b.allPropagationTargets(a).indexOf(c))throw new Error("Propagating event '"+a+"' would cause a cycle.");e[a]=e[a]||[],-1===c.directPropagationTargets().indexOf(b)&&b.addEventListener("eventmodelcleanup",function(){this===b&&c.stopPropagatingTo(b)}),-1===e[a].indexOf(b)&&e[a].push(b)},c.propagateEventFrom=function(a,b){b.propagateEventTo(a,c)},c.stopPropagatingTo=function(a){Object.keys(e).forEach(function(b){e[b]=e[b].filter(function(b){return b!==a})})},c.directPropagationTargets=function(a){var b=[],c=void 0===a?Object.keys(e):[a,"*"];return c.forEach(function(a){var c=e[a]||[];c.forEach(function(a){-1===b.indexOf(a)&&b.push(a)})}),b},c.allPropagationTargets=function(a){var b=c.directPropagationTargets(a),d=Array.prototype.slice.call(b);return b.forEach(function(b){b.allPropagationTargets(a).forEach(function(a){-1===d.indexOf(a)&&d.push(a)})}),d}}},BrainBrowser.events.addEventModel(BrainBrowser.events)}(),function(){"use strict";var a=BrainBrowser.loader={loadFromURL:function(b,c,d){d=d||{};var e,f=new XMLHttpRequest,g=d.result_type,h=b.split("/"),i=h[h.length-1];f.open("GET",b),"arraybuffer"===g&&(f.responseType="arraybuffer"),f.onreadystatechange=function(){if(4===f.readyState){if(e=f.status,!(e>=200&&300>e||304===e)){var g="error loading URL: "+b+"\nHTTP Response: "+f.status+"\nHTTP Status: "+f.statusText+"\nResponse was: \n"+f.response;throw BrainBrowser.events.triggerEvent("error",{message:g}),new Error(g)}a.checkCancel(d)||c(f.response,i,d)}},f.send()},loadFromFile:function(a,b,c){var d=a.files;if(0!==d.length){c=c||{};var e=c.result_type,f=new FileReader,g=a.value.split("\\"),h=g[g.length-1];f.file=d[0],f.onloadend=function(a){b(a.target.result,h,c)},f.onerror=function(){var a="error reading file: "+h;throw BrainBrowser.events.triggerEvent("error",{message:a}),new Error(a)},"arraybuffer"===e?f.readAsArrayBuffer(d[0]):f.readAsText(d[0])}},loadColorMapFromURL:function(b,c,d){a.loadFromURL(b,function(a,b,d){c(BrainBrowser.createColorMap(a,d),b,d)},d)},loadColorMapFromFile:function(b,c,d){a.loadFromFile(b,function(a,b,d){c(BrainBrowser.createColorMap(a,d),b,d)},d)},checkCancel:function(a){a=a||{},BrainBrowser.utils.isFunction(a)&&(a={test:a});var b=a.test,c=a.cleanup,d=!1;return b&&b()&&(d=!0,c&&c()),d}}}(),function(){"use strict";BrainBrowser.utils={canvasEnabled:function(){return!!document.createElement("canvas")},webglEnabled:function(){var a=document.createElement("canvas");try{return!(!a||!window.WebGLRenderingContext||!a.getContext("webgl")&&!a.getContext("experimental-webgl"))}catch(b){return!1}},webWorkersEnabled:function(){return!!window.Worker},webGLErrorMessage:function(){var a,b='BrainBrowser requires WebGL.
';return b+=window.WebGLRenderingContext?"Your browser seems to support it, but it is
disabled or unavailable.
":"Your browser does not seem to support it.
",b+='Test your browser\'s WebGL support here.',a=document.createElement("div"),a.id="webgl-error",a.innerHTML=b,a},isFunction:function(a){return a instanceof Function||"function"==typeof a},isNumeric:function(a){return!isNaN(parseFloat(a))},createDataURL:function(a,b){if(!window.URL||!window.URL.createObjectURL)throw new Error("createDataURL requires URL.createObjectURL which does not seem to be available is this browser.");return window.URL.createObjectURL(new Blob([a],{type:b||"text/plain"}))},min:function(){var a=Array.prototype.slice.call(arguments);a=1===a.length&&BrainBrowser.utils.isNumeric(a[0].length)?a[0]:a;var b,c,d=a[0];for(b=1,c=a.length;c>b;b++)a[b]b;b++)a[b]>d&&(d=a[b]);return d},getOffset:function(a){for(var b=0,c=0;a.offsetParent;)b+=a.offsetTop,c+=a.offsetLeft,a=a.offsetParent;return{top:b,left:c}},captureMouse:function(a){var b={x:0,y:0,left:!1,middle:!1,right:!1};return document.addEventListener("mousemove",function(c){var d,e,f=BrainBrowser.utils.getOffset(a);void 0!==c.pageX?(d=c.pageX,e=c.pageY):(d=c.clientX+window.pageXOffset,e=c.clientY+window.pageYOffset),b.x=d-f.left,b.y=e-f.top},!1),a.addEventListener("mousedown",function(a){a.preventDefault(),0===a.button&&(b.left=!0),1===a.button&&(b.middle=!0),2===a.button&&(b.right=!0)},!1),a.addEventListener("mouseup",function(a){a.preventDefault(),0===a.button&&(b.left=!1),1===a.button&&(b.middle=!1),2===a.button&&(b.right=!1)},!1),a.addEventListener("mouseleave",function(a){a.preventDefault(),b.left=b.middle=b.right=!1},!1),a.addEventListener("contextmenu",function(a){a.preventDefault()},!1),b},captureTouch:function(a){function b(b){var d,e,f,g,h,i=BrainBrowser.utils.getOffset(a);for(c.length=g=b.touches.length,f=0;g>f;f++)h=b.touches[f],void 0!==h.pageX?(d=h.pageX,e=h.pageY):(d=h.clientX+window.pageXOffset,e=h.clientY+window.pageYOffset),c[f]=c[f]||{},c[f].x=d-i.left,c[f].y=e-i.top}var c=[];return a.addEventListener("touchstart",b,!1),a.addEventListener("touchmove",b,!1),a.addEventListener("touchend",b,!1),c}}}(),function(){"use strict";function a(a){var c,d=BrainBrowser.config.get("worker_dir");if(null===d)throw c="error in SurfaceViewer configuration.\nBrainBrowser configuration parameter 'worker_dir' not defined.\nUse 'BrainBrowser.config.set(\"worker_dir\", ...)' to set it.",BrainBrowser.events.triggerEvent("error",{message:c}),new Error(c);var e,f={deindex:"deindex.worker.js",wireframe:"wireframe.worker.js"},g=0,h=BrainBrowser.config.get("model_types"),i=BrainBrowser.config.get("intensity_data_types");return null!==h&&Object.keys(h).forEach(function(a){f[a+"_model"]=h[a].worker}),null!==i&&Object.keys(i).forEach(function(a){f[a+"_intensity"]=i[a].worker}),e=Object.keys(f),0===e.length?void a():void(window.URL&&window.URL.createObjectURL?e.forEach(function(c){var h,i=d+"/"+f[c],j=new XMLHttpRequest;j.open("GET",i),j.onreadystatechange=function(){4===j.readyState&&(h=j.status,b.worker_urls[c]=h>=200&&300>h||304===h?BrainBrowser.utils.createDataURL(j.response,"application/javascript"):i,++g===e.length&&a())},j.send()}):(e.forEach(function(a){b.worker_urls[a]=d+"/"+f[a]}),a()))}var b=BrainBrowser.SurfaceViewer={start:function(c,d){if(console.log("BrainBrowser Surface Viewer v"+BrainBrowser.version),!BrainBrowser.utils.webWorkersEnabled())return void alert("Can't find web workers. Exiting.");if(!BrainBrowser.utils.webglEnabled())return void alert("Can't get WebGL context. Exiting.");var e,f={};e="string"==typeof c?document.getElementById(c):c;var g={dom_element:e,model:null,model_data:null,mouse:BrainBrowser.utils.captureMouse(e),touches:BrainBrowser.utils.captureTouch(e),updated:!0,zoom:1,autorotate:{x:!1,y:!1,z:!1},getAttribute:function(a){return f[a]},setAttribute:function(a,b){f[a]=b},getVertex:function(a,c){c=c||{};var d=g.model_data.get(c.model_name).vertices,e=3*a;return new b.THREE.Vector3(d[e],d[e+1],d[e+2])}};return Object.keys(b.modules).forEach(function(a){b.modules[a](g)}),BrainBrowser.events.addEventModel(g),BrainBrowser.events.addEventListener("*",function(a){"draw"!==a&&(g.updated=!0)}),a(function(){d(g)}),g}};b.modules={},b.worker_urls={},BrainBrowser.config.set("model_types.json.worker","json.worker.js"),BrainBrowser.config.set("model_types.mniobj.worker","mniobj.worker.js"),BrainBrowser.config.set("model_types.wavefrontobj.worker","wavefrontobj.worker.js"),BrainBrowser.config.set("model_types.freesurferbin.worker","freesurferbin.worker.js"),BrainBrowser.config.set("model_types.freesurferbin.binary",!0),BrainBrowser.config.set("model_types.freesurferasc.worker","freesurferasc.worker.js"),BrainBrowser.config.set("intensity_data_types.mniobj.worker","mniobj.intensity.worker.js"),BrainBrowser.config.set("intensity_data_types.freesurferbin.worker","freesurferbin.intensity.worker.js"),BrainBrowser.config.set("intensity_data_types.freesurferbin.binary",!0),BrainBrowser.config.set("intensity_data_types.freesurferasc.worker","freesurferasc.intensity.worker.js")}(),BrainBrowser.SurfaceViewer.parseIntensityData=function(a,b,c){"use strict";var d,e=b+"_intensity";if(!BrainBrowser.SurfaceViewer.worker_urls[e])throw d="error in SurfaceViewer configuration.\nIntensity data worker URL for "+b+" not defined.\nUse 'BrainBrowser.config.set(\"intensity_data_types."+b+".worker\", ...)' to set it.",BrainBrowser.events.triggerEvent("error",{message:d}),new Error(d);var f=new Worker(BrainBrowser.SurfaceViewer.worker_urls[e]);f.addEventListener("message",function(a){c(a.data),f.terminate()}),f.postMessage({cmd:"parse",data:a})},function(){"use strict";var a=BrainBrowser.SurfaceViewer.THREE={REVISION:"66"};self.console=self.console||{info:function(){},log:function(){},debug:function(){},warn:function(){},error:function(){}},function(){for(var a=0,b=["ms","moz","webkit","o"],c=0;c>16&255)/255,this.g=(a>>8&255)/255,this.b=(255&a)/255,this},setRGB:function(a,b,c){return this.r=a,this.g=b,this.b=c,this},setHSL:function(a,b,c){if(0===b)this.r=this.g=this.b=c;else{var d=function(a,b,c){return 0>c&&(c+=1),c>1&&(c-=1),1/6>c?a+6*(b-a)*c:.5>c?b:2/3>c?a+6*(b-a)*(2/3-c):a},e=.5>=c?c*(1+b):c+b-c*b,f=2*c-e;this.r=d(f,e,a+1/3),this.g=d(f,e,a),this.b=d(f,e,a-1/3)}return this},setStyle:function(b){if(/^rgb\((\d+), ?(\d+), ?(\d+)\)$/i.test(b)){var c=/^rgb\((\d+), ?(\d+), ?(\d+)\)$/i.exec(b);return this.r=Math.min(255,parseInt(c[1],10))/255,this.g=Math.min(255,parseInt(c[2],10))/255,this.b=Math.min(255,parseInt(c[3],10))/255,this}if(/^rgb\((\d+)\%, ?(\d+)\%, ?(\d+)\%\)$/i.test(b)){var c=/^rgb\((\d+)\%, ?(\d+)\%, ?(\d+)\%\)$/i.exec(b);return this.r=Math.min(100,parseInt(c[1],10))/100,this.g=Math.min(100,parseInt(c[2],10))/100,this.b=Math.min(100,parseInt(c[3],10))/100,this}if(/^\#([0-9a-f]{6})$/i.test(b)){var c=/^\#([0-9a-f]{6})$/i.exec(b);return this.setHex(parseInt(c[1],16)),this}if(/^\#([0-9a-f])([0-9a-f])([0-9a-f])$/i.test(b)){var c=/^\#([0-9a-f])([0-9a-f])([0-9a-f])$/i.exec(b);return this.setHex(parseInt(c[1]+c[1]+c[2]+c[2]+c[3]+c[3],16)),this}return/^(\w+)$/i.test(b)?(this.setHex(a.ColorKeywords[b]),this):void 0},copy:function(a){return this.r=a.r,this.g=a.g,this.b=a.b,this},copyGammaToLinear:function(a){return this.r=a.r*a.r,this.g=a.g*a.g,this.b=a.b*a.b,this},copyLinearToGamma:function(a){return this.r=Math.sqrt(a.r),this.g=Math.sqrt(a.g),this.b=Math.sqrt(a.b),this},convertGammaToLinear:function(){var a=this.r,b=this.g,c=this.b;return this.r=a*a,this.g=b*b,this.b=c*c,this},convertLinearToGamma:function(){return this.r=Math.sqrt(this.r),this.g=Math.sqrt(this.g),this.b=Math.sqrt(this.b),this},getHex:function(){return 255*this.r<<16^255*this.g<<8^255*this.b<<0},getHexString:function(){return("000000"+this.getHex().toString(16)).slice(-6)},getHSL:function(a){var b,c,d=a||{h:0,s:0,l:0},e=this.r,f=this.g,g=this.b,h=Math.max(e,f,g),i=Math.min(e,f,g),j=(i+h)/2;if(i===h)b=0,c=0;else{var k=h-i;switch(c=.5>=j?k/(h+i):k/(2-h-i),h){case e:b=(f-g)/k+(g>f?6:0);break;case f:b=(g-e)/k+2;break;case g:b=(e-f)/k+4}b/=6}return d.h=b,d.s=c,d.l=j,d},getStyle:function(){return"rgb("+(255*this.r|0)+","+(255*this.g|0)+","+(255*this.b|0)+")"},offsetHSL:function(a,b,c){var d=this.getHSL();return d.h+=a,d.s+=b,d.l+=c,this.setHSL(d.h,d.s,d.l),this},add:function(a){return this.r+=a.r,this.g+=a.g,this.b+=a.b,this},addColors:function(a,b){return this.r=a.r+b.r,this.g=a.g+b.g,this.b=a.b+b.b,this},addScalar:function(a){return this.r+=a,this.g+=a,this.b+=a,this},multiply:function(a){return this.r*=a.r,this.g*=a.g,this.b*=a.b,this},multiplyScalar:function(a){return this.r*=a,this.g*=a,this.b*=a,this},lerp:function(a,b){return this.r+=(a.r-this.r)*b,this.g+=(a.g-this.g)*b,this.b+=(a.b-this.b)*b,this},equals:function(a){return a.r===this.r&&a.g===this.g&&a.b===this.b},fromArray:function(a){return this.r=a[0],this.g=a[1],this.b=a[2],this},toArray:function(){return[this.r,this.g,this.b]},clone:function(){return(new a.Color).setRGB(this.r,this.g,this.b)}},a.ColorKeywords={aliceblue:15792383,antiquewhite:16444375,aqua:65535,aquamarine:8388564,azure:15794175,beige:16119260,bisque:16770244,black:0,blanchedalmond:16772045,blue:255,blueviolet:9055202,brown:10824234,burlywood:14596231,cadetblue:6266528,chartreuse:8388352,chocolate:13789470,coral:16744272,cornflowerblue:6591981,cornsilk:16775388,crimson:14423100,cyan:65535,darkblue:139,darkcyan:35723,darkgoldenrod:12092939,darkgray:11119017,darkgreen:25600,darkgrey:11119017,darkkhaki:12433259,darkmagenta:9109643,darkolivegreen:5597999,darkorange:16747520,darkorchid:10040012,darkred:9109504,darksalmon:15308410,darkseagreen:9419919,darkslateblue:4734347,darkslategray:3100495,darkslategrey:3100495,darkturquoise:52945,darkviolet:9699539,deeppink:16716947,deepskyblue:49151,dimgray:6908265,dimgrey:6908265,dodgerblue:2003199,firebrick:11674146,floralwhite:16775920,forestgreen:2263842,fuchsia:16711935,gainsboro:14474460,ghostwhite:16316671,gold:16766720,goldenrod:14329120,gray:8421504,green:32768,greenyellow:11403055,grey:8421504,honeydew:15794160,hotpink:16738740,indianred:13458524,indigo:4915330,ivory:16777200,khaki:15787660,lavender:15132410,lavenderblush:16773365,lawngreen:8190976,lemonchiffon:16775885,lightblue:11393254,lightcoral:15761536,lightcyan:14745599,lightgoldenrodyellow:16448210,lightgray:13882323,lightgreen:9498256,lightgrey:13882323,lightpink:16758465,lightsalmon:16752762,lightseagreen:2142890,lightskyblue:8900346,lightslategray:7833753,lightslategrey:7833753,lightsteelblue:11584734,lightyellow:16777184,lime:65280,limegreen:3329330,linen:16445670,magenta:16711935,maroon:8388608,mediumaquamarine:6737322,mediumblue:205,mediumorchid:12211667,mediumpurple:9662683,mediumseagreen:3978097,mediumslateblue:8087790,mediumspringgreen:64154,mediumturquoise:4772300,mediumvioletred:13047173,midnightblue:1644912,mintcream:16121850,mistyrose:16770273,moccasin:16770229,navajowhite:16768685,navy:128,oldlace:16643558,olive:8421376,olivedrab:7048739,orange:16753920,orangered:16729344,orchid:14315734,palegoldenrod:15657130,palegreen:10025880,paleturquoise:11529966,palevioletred:14381203,papayawhip:16773077,peachpuff:16767673,peru:13468991,pink:16761035,plum:14524637,powderblue:11591910,purple:8388736,red:16711680,rosybrown:12357519,royalblue:4286945,saddlebrown:9127187,salmon:16416882,sandybrown:16032864,seagreen:3050327,seashell:16774638,sienna:10506797,silver:12632256,skyblue:8900331,slateblue:6970061,slategray:7372944,slategrey:7372944,snow:16775930,springgreen:65407,steelblue:4620980,tan:13808780,teal:32896,thistle:14204888,tomato:16737095,turquoise:4251856,violet:15631086,wheat:16113331,white:16777215,whitesmoke:16119285,yellow:16776960,yellowgreen:10145074},a.Quaternion=function(a,b,c,d){this._x=a||0,this._y=b||0,this._z=c||0,this._w=void 0!==d?d:1},a.Quaternion.prototype={constructor:a.Quaternion,_x:0,_y:0,_z:0,_w:0,_euler:void 0,_updateEuler:function(){void 0!==this._euler&&this._euler.setFromQuaternion(this,void 0,!1)},get x(){return this._x},set x(a){this._x=a,this._updateEuler()},get y(){return this._y},set y(a){this._y=a,this._updateEuler()},get z(){return this._z},set z(a){this._z=a,this._updateEuler()},get w(){return this._w},set w(a){this._w=a,this._updateEuler()},set:function(a,b,c,d){return this._x=a,this._y=b,this._z=c,this._w=d,this._updateEuler(),this},copy:function(a){return this._x=a._x,this._y=a._y,this._z=a._z,this._w=a._w,this._updateEuler(),this},setFromEuler:function(b,c){if(b instanceof a.Euler==!1)throw new Error("ERROR: Quaternion's .setFromEuler() now expects a Euler rotation rather than a Vector3 and order. Please update your code.");var d=Math.cos(b._x/2),e=Math.cos(b._y/2),f=Math.cos(b._z/2),g=Math.sin(b._x/2),h=Math.sin(b._y/2),i=Math.sin(b._z/2);return"XYZ"===b.order?(this._x=g*e*f+d*h*i,this._y=d*h*f-g*e*i,this._z=d*e*i+g*h*f,this._w=d*e*f-g*h*i):"YXZ"===b.order?(this._x=g*e*f+d*h*i,this._y=d*h*f-g*e*i,this._z=d*e*i-g*h*f,this._w=d*e*f+g*h*i):"ZXY"===b.order?(this._x=g*e*f-d*h*i,this._y=d*h*f+g*e*i,this._z=d*e*i+g*h*f,this._w=d*e*f-g*h*i):"ZYX"===b.order?(this._x=g*e*f-d*h*i,this._y=d*h*f+g*e*i,this._z=d*e*i-g*h*f,this._w=d*e*f+g*h*i):"YZX"===b.order?(this._x=g*e*f+d*h*i,this._y=d*h*f+g*e*i,this._z=d*e*i-g*h*f,this._w=d*e*f-g*h*i):"XZY"===b.order&&(this._x=g*e*f-d*h*i,this._y=d*h*f-g*e*i,this._z=d*e*i+g*h*f,this._w=d*e*f+g*h*i),c!==!1&&this._updateEuler(),this},setFromAxisAngle:function(a,b){var c=b/2,d=Math.sin(c);return this._x=a.x*d,this._y=a.y*d,this._z=a.z*d,this._w=Math.cos(c),this._updateEuler(),this},setFromRotationMatrix:function(a){var b,c=a.elements,d=c[0],e=c[4],f=c[8],g=c[1],h=c[5],i=c[9],j=c[2],k=c[6],l=c[10],m=d+h+l;return m>0?(b=.5/Math.sqrt(m+1),this._w=.25/b,this._x=(k-i)*b,this._y=(f-j)*b,this._z=(g-e)*b):d>h&&d>l?(b=2*Math.sqrt(1+d-h-l),this._w=(k-i)/b,this._x=.25*b,this._y=(e+g)/b,this._z=(f+j)/b):h>l?(b=2*Math.sqrt(1+h-d-l),this._w=(f-j)/b,this._x=(e+g)/b,this._y=.25*b,this._z=(i+k)/b):(b=2*Math.sqrt(1+l-d-h),this._w=(g-e)/b,this._x=(f+j)/b,this._y=(i+k)/b,this._z=.25*b),this._updateEuler(),this},inverse:function(){return this.conjugate().normalize(),this},conjugate:function(){return this._x*=-1,this._y*=-1,this._z*=-1,this._updateEuler(),this},lengthSq:function(){return this._x*this._x+this._y*this._y+this._z*this._z+this._w*this._w},length:function(){return Math.sqrt(this._x*this._x+this._y*this._y+this._z*this._z+this._w*this._w)},normalize:function(){var a=this.length();return 0===a?(this._x=0,this._y=0,this._z=0,this._w=1):(a=1/a,this._x=this._x*a,this._y=this._y*a,this._z=this._z*a,this._w=this._w*a),this},multiply:function(a,b){return void 0!==b?(console.warn("DEPRECATED: Quaternion's .multiply() now only accepts one argument. Use .multiplyQuaternions( a, b ) instead."),this.multiplyQuaternions(a,b)):this.multiplyQuaternions(this,a)},multiplyQuaternions:function(a,b){var c=a._x,d=a._y,e=a._z,f=a._w,g=b._x,h=b._y,i=b._z,j=b._w;return this._x=c*j+f*g+d*i-e*h,this._y=d*j+f*h+e*g-c*i,this._z=e*j+f*i+c*h-d*g,this._w=f*j-c*g-d*h-e*i,this._updateEuler(),this},multiplyVector3:function(a){return console.warn("DEPRECATED: Quaternion's .multiplyVector3() has been removed. Use is now vector.applyQuaternion( quaternion ) instead."),a.applyQuaternion(this)},slerp:function(a,b){var c=this._x,d=this._y,e=this._z,f=this._w,g=f*a._w+c*a._x+d*a._y+e*a._z;if(0>g?(this._w=-a._w,this._x=-a._x,this._y=-a._y,this._z=-a._z,g=-g):this.copy(a),g>=1)return this._w=f,this._x=c,this._y=d,this._z=e,this;var h=Math.acos(g),i=Math.sqrt(1-g*g);if(Math.abs(i)<.001)return this._w=.5*(f+this._w),this._x=.5*(c+this._x),this._y=.5*(d+this._y),this._z=.5*(e+this._z),this;var j=Math.sin((1-b)*h)/i,k=Math.sin(b*h)/i;return this._w=f*j+this._w*k,this._x=c*j+this._x*k,this._y=d*j+this._y*k,this._z=e*j+this._z*k,this._updateEuler(),this},equals:function(a){return a._x===this._x&&a._y===this._y&&a._z===this._z&&a._w===this._w},fromArray:function(a){return this._x=a[0],this._y=a[1],this._z=a[2],this._w=a[3],this._updateEuler(),this},toArray:function(){return[this._x,this._y,this._z,this._w]},clone:function(){return new a.Quaternion(this._x,this._y,this._z,this._w)}},a.Quaternion.slerp=function(a,b,c,d){return c.copy(a).slerp(b,d)},a.Vector2=function(a,b){this.x=a||0,this.y=b||0},a.Vector2.prototype={constructor:a.Vector2,set:function(a,b){return this.x=a,this.y=b,this},setX:function(a){return this.x=a,this},setY:function(a){return this.y=a,this},setComponent:function(a,b){switch(a){case 0:this.x=b;break;case 1:this.y=b;break;default:throw new Error("index is out of range: "+a)}},getComponent:function(a){switch(a){case 0:return this.x;case 1:return this.y;default:throw new Error("index is out of range: "+a)}},copy:function(a){return this.x=a.x,this.y=a.y,this},add:function(a,b){return void 0!==b?(console.warn("DEPRECATED: Vector2's .add() now only accepts one argument. Use .addVectors( a, b ) instead."),this.addVectors(a,b)):(this.x+=a.x,this.y+=a.y,this)},addVectors:function(a,b){return this.x=a.x+b.x,this.y=a.y+b.y,this},addScalar:function(a){return this.x+=a,this.y+=a,this},sub:function(a,b){return void 0!==b?(console.warn("DEPRECATED: Vector2's .sub() now only accepts one argument. Use .subVectors( a, b ) instead."),this.subVectors(a,b)):(this.x-=a.x,this.y-=a.y,this)},subVectors:function(a,b){return this.x=a.x-b.x,this.y=a.y-b.y,this},multiplyScalar:function(a){return this.x*=a,this.y*=a,this},divideScalar:function(a){if(0!==a){var b=1/a;this.x*=b,this.y*=b}else this.x=0,this.y=0;return this},min:function(a){return this.x>a.x&&(this.x=a.x),this.y>a.y&&(this.y=a.y),this},max:function(a){return this.xb.x&&(this.x=b.x),this.yb.y&&(this.y=b.y),this},clampScalar:function(){var b,c;return function(d,e){return void 0===b&&(b=new a.Vector2,c=new a.Vector2),b.set(d,d),c.set(e,e),this.clamp(b,c)}}(),floor:function(){return this.x=Math.floor(this.x),this.y=Math.floor(this.y),this},ceil:function(){return this.x=Math.ceil(this.x),this.y=Math.ceil(this.y),this},round:function(){return this.x=Math.round(this.x),this.y=Math.round(this.y),this},roundToZero:function(){return this.x=this.x<0?Math.ceil(this.x):Math.floor(this.x),this.y=this.y<0?Math.ceil(this.y):Math.floor(this.y),this},negate:function(){return this.multiplyScalar(-1)},dot:function(a){return this.x*a.x+this.y*a.y},lengthSq:function(){return this.x*this.x+this.y*this.y},length:function(){return Math.sqrt(this.x*this.x+this.y*this.y)},normalize:function(){return this.divideScalar(this.length())},distanceTo:function(a){return Math.sqrt(this.distanceToSquared(a))},distanceToSquared:function(a){var b=this.x-a.x,c=this.y-a.y;return b*b+c*c},setLength:function(a){var b=this.length();return 0!==b&&a!==b&&this.multiplyScalar(a/b),this},lerp:function(a,b){return this.x+=(a.x-this.x)*b,this.y+=(a.y-this.y)*b,this},equals:function(a){return a.x===this.x&&a.y===this.y},fromArray:function(a){return this.x=a[0],this.y=a[1],this},toArray:function(){return[this.x,this.y]},clone:function(){return new a.Vector2(this.x,this.y)}},a.Vector3=function(a,b,c){this.x=a||0,this.y=b||0,this.z=c||0},a.Vector3.prototype={constructor:a.Vector3,set:function(a,b,c){return this.x=a,this.y=b,this.z=c,this},setX:function(a){return this.x=a,this},setY:function(a){return this.y=a,this},setZ:function(a){return this.z=a,this},setComponent:function(a,b){switch(a){case 0:this.x=b;break;case 1:this.y=b;break;case 2:this.z=b;break;default:throw new Error("index is out of range: "+a)}},getComponent:function(a){switch(a){case 0:return this.x;case 1:return this.y;case 2:return this.z;default:throw new Error("index is out of range: "+a)}},copy:function(a){return this.x=a.x,this.y=a.y,this.z=a.z,this},add:function(a,b){return void 0!==b?(console.warn("DEPRECATED: Vector3's .add() now only accepts one argument. Use .addVectors( a, b ) instead."),this.addVectors(a,b)):(this.x+=a.x,this.y+=a.y,this.z+=a.z,this)},addScalar:function(a){return this.x+=a,this.y+=a,this.z+=a,this},addVectors:function(a,b){return this.x=a.x+b.x,this.y=a.y+b.y,this.z=a.z+b.z,this},sub:function(a,b){return void 0!==b?(console.warn("DEPRECATED: Vector3's .sub() now only accepts one argument. Use .subVectors( a, b ) instead."),this.subVectors(a,b)):(this.x-=a.x,this.y-=a.y,this.z-=a.z,this)},subVectors:function(a,b){return this.x=a.x-b.x,this.y=a.y-b.y,this.z=a.z-b.z,this},multiply:function(a,b){return void 0!==b?(console.warn("DEPRECATED: Vector3's .multiply() now only accepts one argument. Use .multiplyVectors( a, b ) instead."),this.multiplyVectors(a,b)):(this.x*=a.x,this.y*=a.y,this.z*=a.z,this)},multiplyScalar:function(a){return this.x*=a,this.y*=a,this.z*=a,this},multiplyVectors:function(a,b){return this.x=a.x*b.x,this.y=a.y*b.y,this.z=a.z*b.z,this},applyEuler:function(){var b;return function(c){return c instanceof a.Euler==!1&&console.error("ERROR: Vector3's .applyEuler() now expects a Euler rotation rather than a Vector3 and order. Please update your code."),void 0===b&&(b=new a.Quaternion),this.applyQuaternion(b.setFromEuler(c)),this }}(),applyAxisAngle:function(){var b;return function(c,d){return void 0===b&&(b=new a.Quaternion),this.applyQuaternion(b.setFromAxisAngle(c,d)),this}}(),applyMatrix3:function(a){var b=this.x,c=this.y,d=this.z,e=a.elements;return this.x=e[0]*b+e[3]*c+e[6]*d,this.y=e[1]*b+e[4]*c+e[7]*d,this.z=e[2]*b+e[5]*c+e[8]*d,this},applyMatrix4:function(a){var b=this.x,c=this.y,d=this.z,e=a.elements;return this.x=e[0]*b+e[4]*c+e[8]*d+e[12],this.y=e[1]*b+e[5]*c+e[9]*d+e[13],this.z=e[2]*b+e[6]*c+e[10]*d+e[14],this},applyProjection:function(a){var b=this.x,c=this.y,d=this.z,e=a.elements,f=1/(e[3]*b+e[7]*c+e[11]*d+e[15]);return this.x=(e[0]*b+e[4]*c+e[8]*d+e[12])*f,this.y=(e[1]*b+e[5]*c+e[9]*d+e[13])*f,this.z=(e[2]*b+e[6]*c+e[10]*d+e[14])*f,this},applyQuaternion:function(a){var b=this.x,c=this.y,d=this.z,e=a.x,f=a.y,g=a.z,h=a.w,i=h*b+f*d-g*c,j=h*c+g*b-e*d,k=h*d+e*c-f*b,l=-e*b-f*c-g*d;return this.x=i*h+l*-e+j*-g-k*-f,this.y=j*h+l*-f+k*-e-i*-g,this.z=k*h+l*-g+i*-f-j*-e,this},transformDirection:function(a){var b=this.x,c=this.y,d=this.z,e=a.elements;return this.x=e[0]*b+e[4]*c+e[8]*d,this.y=e[1]*b+e[5]*c+e[9]*d,this.z=e[2]*b+e[6]*c+e[10]*d,this.normalize(),this},divide:function(a){return this.x/=a.x,this.y/=a.y,this.z/=a.z,this},divideScalar:function(a){if(0!==a){var b=1/a;this.x*=b,this.y*=b,this.z*=b}else this.x=0,this.y=0,this.z=0;return this},min:function(a){return this.x>a.x&&(this.x=a.x),this.y>a.y&&(this.y=a.y),this.z>a.z&&(this.z=a.z),this},max:function(a){return this.xb.x&&(this.x=b.x),this.yb.y&&(this.y=b.y),this.zb.z&&(this.z=b.z),this},clampScalar:function(){var b,c;return function(d,e){return void 0===b&&(b=new a.Vector3,c=new a.Vector3),b.set(d,d,d),c.set(e,e,e),this.clamp(b,c)}}(),floor:function(){return this.x=Math.floor(this.x),this.y=Math.floor(this.y),this.z=Math.floor(this.z),this},ceil:function(){return this.x=Math.ceil(this.x),this.y=Math.ceil(this.y),this.z=Math.ceil(this.z),this},round:function(){return this.x=Math.round(this.x),this.y=Math.round(this.y),this.z=Math.round(this.z),this},roundToZero:function(){return this.x=this.x<0?Math.ceil(this.x):Math.floor(this.x),this.y=this.y<0?Math.ceil(this.y):Math.floor(this.y),this.z=this.z<0?Math.ceil(this.z):Math.floor(this.z),this},negate:function(){return this.multiplyScalar(-1)},dot:function(a){return this.x*a.x+this.y*a.y+this.z*a.z},lengthSq:function(){return this.x*this.x+this.y*this.y+this.z*this.z},length:function(){return Math.sqrt(this.x*this.x+this.y*this.y+this.z*this.z)},lengthManhattan:function(){return Math.abs(this.x)+Math.abs(this.y)+Math.abs(this.z)},normalize:function(){return this.divideScalar(this.length())},setLength:function(a){var b=this.length();return 0!==b&&a!==b&&this.multiplyScalar(a/b),this},lerp:function(a,b){return this.x+=(a.x-this.x)*b,this.y+=(a.y-this.y)*b,this.z+=(a.z-this.z)*b,this},cross:function(a,b){if(void 0!==b)return console.warn("DEPRECATED: Vector3's .cross() now only accepts one argument. Use .crossVectors( a, b ) instead."),this.crossVectors(a,b);var c=this.x,d=this.y,e=this.z;return this.x=d*a.z-e*a.y,this.y=e*a.x-c*a.z,this.z=c*a.y-d*a.x,this},crossVectors:function(a,b){var c=a.x,d=a.y,e=a.z,f=b.x,g=b.y,h=b.z;return this.x=d*h-e*g,this.y=e*f-c*h,this.z=c*g-d*f,this},projectOnVector:function(){var b,c;return function(d){return void 0===b&&(b=new a.Vector3),b.copy(d).normalize(),c=this.dot(b),this.copy(b).multiplyScalar(c)}}(),projectOnPlane:function(){var b;return function(c){return void 0===b&&(b=new a.Vector3),b.copy(this).projectOnVector(c),this.sub(b)}}(),reflect:function(){var b;return function(c){return void 0===b&&(b=new a.Vector3),this.sub(b.copy(c).multiplyScalar(2*this.dot(c)))}}(),angleTo:function(b){var c=this.dot(b)/(this.length()*b.length());return Math.acos(a.Math.clamp(c,-1,1))},distanceTo:function(a){return Math.sqrt(this.distanceToSquared(a))},distanceToSquared:function(a){var b=this.x-a.x,c=this.y-a.y,d=this.z-a.z;return b*b+c*c+d*d},setEulerFromRotationMatrix:function(){console.error("REMOVED: Vector3's setEulerFromRotationMatrix has been removed in favor of Euler.setFromRotationMatrix(), please update your code.")},setEulerFromQuaternion:function(){console.error("REMOVED: Vector3's setEulerFromQuaternion: has been removed in favor of Euler.setFromQuaternion(), please update your code.")},getPositionFromMatrix:function(a){return console.warn("DEPRECATED: Vector3's .getPositionFromMatrix() has been renamed to .setFromMatrixPosition(). Please update your code."),this.setFromMatrixPosition(a)},getScaleFromMatrix:function(a){return console.warn("DEPRECATED: Vector3's .getScaleFromMatrix() has been renamed to .setFromMatrixScale(). Please update your code."),this.setFromMatrixScale(a)},getColumnFromMatrix:function(a,b){return console.warn("DEPRECATED: Vector3's .getColumnFromMatrix() has been renamed to .setFromMatrixColumn(). Please update your code."),this.setFromMatrixColumn(a,b)},setFromMatrixPosition:function(a){return this.x=a.elements[12],this.y=a.elements[13],this.z=a.elements[14],this},setFromMatrixScale:function(a){var b=this.set(a.elements[0],a.elements[1],a.elements[2]).length(),c=this.set(a.elements[4],a.elements[5],a.elements[6]).length(),d=this.set(a.elements[8],a.elements[9],a.elements[10]).length();return this.x=b,this.y=c,this.z=d,this},setFromMatrixColumn:function(a,b){var c=4*a,d=b.elements;return this.x=d[c],this.y=d[c+1],this.z=d[c+2],this},equals:function(a){return a.x===this.x&&a.y===this.y&&a.z===this.z},fromArray:function(a){return this.x=a[0],this.y=a[1],this.z=a[2],this},toArray:function(){return[this.x,this.y,this.z]},clone:function(){return new a.Vector3(this.x,this.y,this.z)}},a.Vector4=function(a,b,c,d){this.x=a||0,this.y=b||0,this.z=c||0,this.w=void 0!==d?d:1},a.Vector4.prototype={constructor:a.Vector4,set:function(a,b,c,d){return this.x=a,this.y=b,this.z=c,this.w=d,this},setX:function(a){return this.x=a,this},setY:function(a){return this.y=a,this},setZ:function(a){return this.z=a,this},setW:function(a){return this.w=a,this},setComponent:function(a,b){switch(a){case 0:this.x=b;break;case 1:this.y=b;break;case 2:this.z=b;break;case 3:this.w=b;break;default:throw new Error("index is out of range: "+a)}},getComponent:function(a){switch(a){case 0:return this.x;case 1:return this.y;case 2:return this.z;case 3:return this.w;default:throw new Error("index is out of range: "+a)}},copy:function(a){return this.x=a.x,this.y=a.y,this.z=a.z,this.w=void 0!==a.w?a.w:1,this},add:function(a,b){return void 0!==b?(console.warn("DEPRECATED: Vector4's .add() now only accepts one argument. Use .addVectors( a, b ) instead."),this.addVectors(a,b)):(this.x+=a.x,this.y+=a.y,this.z+=a.z,this.w+=a.w,this)},addScalar:function(a){return this.x+=a,this.y+=a,this.z+=a,this.w+=a,this},addVectors:function(a,b){return this.x=a.x+b.x,this.y=a.y+b.y,this.z=a.z+b.z,this.w=a.w+b.w,this},sub:function(a,b){return void 0!==b?(console.warn("DEPRECATED: Vector4's .sub() now only accepts one argument. Use .subVectors( a, b ) instead."),this.subVectors(a,b)):(this.x-=a.x,this.y-=a.y,this.z-=a.z,this.w-=a.w,this)},subVectors:function(a,b){return this.x=a.x-b.x,this.y=a.y-b.y,this.z=a.z-b.z,this.w=a.w-b.w,this},multiplyScalar:function(a){return this.x*=a,this.y*=a,this.z*=a,this.w*=a,this},applyMatrix4:function(a){var b=this.x,c=this.y,d=this.z,e=this.w,f=a.elements;return this.x=f[0]*b+f[4]*c+f[8]*d+f[12]*e,this.y=f[1]*b+f[5]*c+f[9]*d+f[13]*e,this.z=f[2]*b+f[6]*c+f[10]*d+f[14]*e,this.w=f[3]*b+f[7]*c+f[11]*d+f[15]*e,this},divideScalar:function(a){if(0!==a){var b=1/a;this.x*=b,this.y*=b,this.z*=b,this.w*=b}else this.x=0,this.y=0,this.z=0,this.w=1;return this},setAxisAngleFromQuaternion:function(a){this.w=2*Math.acos(a.w);var b=Math.sqrt(1-a.w*a.w);return 1e-4>b?(this.x=1,this.y=0,this.z=0):(this.x=a.x/b,this.y=a.y/b,this.z=a.z/b),this},setAxisAngleFromRotationMatrix:function(a){var b,c,d,e,f=.01,g=.1,h=a.elements,i=h[0],j=h[4],k=h[8],l=h[1],m=h[5],n=h[9],o=h[2],p=h[6],q=h[10];if(Math.abs(j-l)s&&r>t?f>r?(c=0,d=.707106781,e=.707106781):(c=Math.sqrt(r),d=u/c,e=v/c):s>t?f>s?(c=.707106781,d=0,e=.707106781):(d=Math.sqrt(s),c=u/d,e=w/d):f>t?(c=.707106781,d=.707106781,e=0):(e=Math.sqrt(t),c=v/e,d=w/e),this.set(c,d,e,b),this}var x=Math.sqrt((p-n)*(p-n)+(k-o)*(k-o)+(l-j)*(l-j));return Math.abs(x)<.001&&(x=1),this.x=(p-n)/x,this.y=(k-o)/x,this.z=(l-j)/x,this.w=Math.acos((i+m+q-1)/2),this},min:function(a){return this.x>a.x&&(this.x=a.x),this.y>a.y&&(this.y=a.y),this.z>a.z&&(this.z=a.z),this.w>a.w&&(this.w=a.w),this},max:function(a){return this.xb.x&&(this.x=b.x),this.yb.y&&(this.y=b.y),this.zb.z&&(this.z=b.z),this.wb.w&&(this.w=b.w),this},clampScalar:function(){var b,c;return function(d,e){return void 0===b&&(b=new a.Vector4,c=new a.Vector4),b.set(d,d,d,d),c.set(e,e,e,e),this.clamp(b,c)}}(),floor:function(){return this.x=Math.floor(this.x),this.y=Math.floor(this.y),this.z=Math.floor(this.z),this.w=Math.floor(this.w),this},ceil:function(){return this.x=Math.ceil(this.x),this.y=Math.ceil(this.y),this.z=Math.ceil(this.z),this.w=Math.ceil(this.w),this},round:function(){return this.x=Math.round(this.x),this.y=Math.round(this.y),this.z=Math.round(this.z),this.w=Math.round(this.w),this},roundToZero:function(){return this.x=this.x<0?Math.ceil(this.x):Math.floor(this.x),this.y=this.y<0?Math.ceil(this.y):Math.floor(this.y),this.z=this.z<0?Math.ceil(this.z):Math.floor(this.z),this.w=this.w<0?Math.ceil(this.w):Math.floor(this.w),this},negate:function(){return this.multiplyScalar(-1)},dot:function(a){return this.x*a.x+this.y*a.y+this.z*a.z+this.w*a.w},lengthSq:function(){return this.x*this.x+this.y*this.y+this.z*this.z+this.w*this.w},length:function(){return Math.sqrt(this.x*this.x+this.y*this.y+this.z*this.z+this.w*this.w)},lengthManhattan:function(){return Math.abs(this.x)+Math.abs(this.y)+Math.abs(this.z)+Math.abs(this.w)},normalize:function(){return this.divideScalar(this.length())},setLength:function(a){var b=this.length();return 0!==b&&a!==b&&this.multiplyScalar(a/b),this},lerp:function(a,b){return this.x+=(a.x-this.x)*b,this.y+=(a.y-this.y)*b,this.z+=(a.z-this.z)*b,this.w+=(a.w-this.w)*b,this},equals:function(a){return a.x===this.x&&a.y===this.y&&a.z===this.z&&a.w===this.w},fromArray:function(a){return this.x=a[0],this.y=a[1],this.z=a[2],this.w=a[3],this},toArray:function(){return[this.x,this.y,this.z,this.w]},clone:function(){return new a.Vector4(this.x,this.y,this.z,this.w)}},a.Euler=function(b,c,d,e){this._x=b||0,this._y=c||0,this._z=d||0,this._order=e||a.Euler.DefaultOrder},a.Euler.RotationOrders=["XYZ","YZX","ZXY","XZY","YXZ","ZYX"],a.Euler.DefaultOrder="XYZ",a.Euler.prototype={constructor:a.Euler,_x:0,_y:0,_z:0,_order:a.Euler.DefaultOrder,_quaternion:void 0,_updateQuaternion:function(){void 0!==this._quaternion&&this._quaternion.setFromEuler(this,!1)},get x(){return this._x},set x(a){this._x=a,this._updateQuaternion()},get y(){return this._y},set y(a){this._y=a,this._updateQuaternion()},get z(){return this._z},set z(a){this._z=a,this._updateQuaternion()},get order(){return this._order},set order(a){this._order=a,this._updateQuaternion()},set:function(a,b,c,d){return this._x=a,this._y=b,this._z=c,this._order=d||this._order,this._updateQuaternion(),this},copy:function(a){return this._x=a._x,this._y=a._y,this._z=a._z,this._order=a._order,this._updateQuaternion(),this},setFromRotationMatrix:function(a,b){function c(a){return Math.min(Math.max(a,-1),1)}var d=a.elements,e=d[0],f=d[4],g=d[8],h=d[1],i=d[5],j=d[9],k=d[2],l=d[6],m=d[10];return b=b||this._order,"XYZ"===b?(this._y=Math.asin(c(g)),Math.abs(g)<.99999?(this._x=Math.atan2(-j,m),this._z=Math.atan2(-f,e)):(this._x=Math.atan2(l,i),this._z=0)):"YXZ"===b?(this._x=Math.asin(-c(j)),Math.abs(j)<.99999?(this._y=Math.atan2(g,m),this._z=Math.atan2(h,i)):(this._y=Math.atan2(-k,e),this._z=0)):"ZXY"===b?(this._x=Math.asin(c(l)),Math.abs(l)<.99999?(this._y=Math.atan2(-k,m),this._z=Math.atan2(-f,i)):(this._y=0,this._z=Math.atan2(h,e))):"ZYX"===b?(this._y=Math.asin(-c(k)),Math.abs(k)<.99999?(this._x=Math.atan2(l,m),this._z=Math.atan2(h,e)):(this._x=0,this._z=Math.atan2(-f,i))):"YZX"===b?(this._z=Math.asin(c(h)),Math.abs(h)<.99999?(this._x=Math.atan2(-j,i),this._y=Math.atan2(-k,e)):(this._x=0,this._y=Math.atan2(g,m))):"XZY"===b?(this._z=Math.asin(-c(f)),Math.abs(f)<.99999?(this._x=Math.atan2(l,i),this._y=Math.atan2(g,e)):(this._x=Math.atan2(-j,m),this._y=0)):console.warn("WARNING: Euler.setFromRotationMatrix() given unsupported order: "+b),this._order=b,this._updateQuaternion(),this},setFromQuaternion:function(a,b,c){function d(a){return Math.min(Math.max(a,-1),1)}var e=a.x*a.x,f=a.y*a.y,g=a.z*a.z,h=a.w*a.w;return b=b||this._order,"XYZ"===b?(this._x=Math.atan2(2*(a.x*a.w-a.y*a.z),h-e-f+g),this._y=Math.asin(d(2*(a.x*a.z+a.y*a.w))),this._z=Math.atan2(2*(a.z*a.w-a.x*a.y),h+e-f-g)):"YXZ"===b?(this._x=Math.asin(d(2*(a.x*a.w-a.y*a.z))),this._y=Math.atan2(2*(a.x*a.z+a.y*a.w),h-e-f+g),this._z=Math.atan2(2*(a.x*a.y+a.z*a.w),h-e+f-g)):"ZXY"===b?(this._x=Math.asin(d(2*(a.x*a.w+a.y*a.z))),this._y=Math.atan2(2*(a.y*a.w-a.z*a.x),h-e-f+g),this._z=Math.atan2(2*(a.z*a.w-a.x*a.y),h-e+f-g)):"ZYX"===b?(this._x=Math.atan2(2*(a.x*a.w+a.z*a.y),h-e-f+g),this._y=Math.asin(d(2*(a.y*a.w-a.x*a.z))),this._z=Math.atan2(2*(a.x*a.y+a.z*a.w),h+e-f-g)):"YZX"===b?(this._x=Math.atan2(2*(a.x*a.w-a.z*a.y),h-e+f-g),this._y=Math.atan2(2*(a.y*a.w-a.x*a.z),h+e-f-g),this._z=Math.asin(d(2*(a.x*a.y+a.z*a.w)))):"XZY"===b?(this._x=Math.atan2(2*(a.x*a.w+a.y*a.z),h-e+f-g),this._y=Math.atan2(2*(a.x*a.z+a.y*a.w),h+e-f-g),this._z=Math.asin(d(2*(a.z*a.w-a.x*a.y)))):console.warn("WARNING: Euler.setFromQuaternion() given unsupported order: "+b),this._order=b,c!==!1&&this._updateQuaternion(),this},reorder:function(){var b=new a.Quaternion;return function(a){b.setFromEuler(this),this.setFromQuaternion(b,a)}}(),fromArray:function(a){return this._x=a[0],this._y=a[1],this._z=a[2],void 0!==a[3]&&(this._order=a[3]),this._updateQuaternion(),this},toArray:function(){return[this._x,this._y,this._z,this._order]},equals:function(a){return a._x===this._x&&a._y===this._y&&a._z===this._z&&a._order===this._order},clone:function(){return new a.Euler(this._x,this._y,this._z,this._order)}},a.Line3=function(b,c){this.start=void 0!==b?b:new a.Vector3,this.end=void 0!==c?c:new a.Vector3},a.Line3.prototype={constructor:a.Line3,set:function(a,b){return this.start.copy(a),this.end.copy(b),this},copy:function(a){return this.start.copy(a.start),this.end.copy(a.end),this},center:function(b){var c=b||new a.Vector3;return c.addVectors(this.start,this.end).multiplyScalar(.5)},delta:function(b){var c=b||new a.Vector3;return c.subVectors(this.end,this.start)},distanceSq:function(){return this.start.distanceToSquared(this.end)},distance:function(){return this.start.distanceTo(this.end)},at:function(b,c){var d=c||new a.Vector3;return this.delta(d).multiplyScalar(b).add(this.start)},closestPointToPointParameter:function(){var b=new a.Vector3,c=new a.Vector3;return function(d,e){b.subVectors(d,this.start),c.subVectors(this.end,this.start);var f=c.dot(c),g=c.dot(b),h=g/f;return e&&(h=a.Math.clamp(h,0,1)),h}}(),closestPointToPoint:function(b,c,d){var e=this.closestPointToPointParameter(b,c),f=d||new a.Vector3;return this.delta(f).multiplyScalar(e).add(this.start)},applyMatrix4:function(a){return this.start.applyMatrix4(a),this.end.applyMatrix4(a),this},equals:function(a){return a.start.equals(this.start)&&a.end.equals(this.end)},clone:function(){return(new a.Line3).copy(this)}},a.Box2=function(b,c){this.min=void 0!==b?b:new a.Vector2(1/0,1/0),this.max=void 0!==c?c:new a.Vector2(-1/0,-1/0)},a.Box2.prototype={constructor:a.Box2,set:function(a,b){return this.min.copy(a),this.max.copy(b),this},setFromPoints:function(a){if(a.length>0){var b=a[0];this.min.copy(b),this.max.copy(b);for(var c=1,d=a.length;d>c;c++)b=a[c],b.xthis.max.x&&(this.max.x=b.x),b.ythis.max.y&&(this.max.y=b.y)}else this.makeEmpty();return this},setFromCenterAndSize:function(){var b=new a.Vector2;return function(a,c){var d=b.copy(c).multiplyScalar(.5);return this.min.copy(a).sub(d),this.max.copy(a).add(d),this}}(),copy:function(a){return this.min.copy(a.min),this.max.copy(a.max),this},makeEmpty:function(){return this.min.x=this.min.y=1/0,this.max.x=this.max.y=-1/0,this},empty:function(){return this.max.xthis.max.x||a.ythis.max.y?!1:!0},containsBox:function(a){return this.min.x<=a.min.x&&a.max.x<=this.max.x&&this.min.y<=a.min.y&&a.max.y<=this.max.y?!0:!1},getParameter:function(b,c){var d=c||new a.Vector2;return d.set((b.x-this.min.x)/(this.max.x-this.min.x),(b.y-this.min.y)/(this.max.y-this.min.y))},isIntersectionBox:function(a){return a.max.xthis.max.x||a.max.ythis.max.y?!1:!0},clampPoint:function(b,c){var d=c||new a.Vector2;return d.copy(b).clamp(this.min,this.max)},distanceToPoint:function(){var b=new a.Vector2;return function(a){var c=b.copy(a).clamp(this.min,this.max);return c.sub(a).length()}}(),intersect:function(a){return this.min.max(a.min),this.max.min(a.max),this},union:function(a){return this.min.min(a.min),this.max.max(a.max),this},translate:function(a){return this.min.add(a),this.max.add(a),this},equals:function(a){return a.min.equals(this.min)&&a.max.equals(this.max)},clone:function(){return(new a.Box2).copy(this)}},a.Box3=function(b,c){this.min=void 0!==b?b:new a.Vector3(1/0,1/0,1/0),this.max=void 0!==c?c:new a.Vector3(-1/0,-1/0,-1/0)},a.Box3.prototype={constructor:a.Box3,set:function(a,b){return this.min.copy(a),this.max.copy(b),this},addPoint:function(a){a.xthis.max.x&&(this.max.x=a.x),a.ythis.max.y&&(this.max.y=a.y),a.zthis.max.z&&(this.max.z=a.z)},setFromPoints:function(a){if(a.length>0){var b=a[0];this.min.copy(b),this.max.copy(b);for(var c=1,d=a.length;d>c;c++)this.addPoint(a[c])}else this.makeEmpty();return this},setFromCenterAndSize:function(){var b=new a.Vector3;return function(a,c){var d=b.copy(c).multiplyScalar(.5);return this.min.copy(a).sub(d),this.max.copy(a).add(d),this}}(),setFromObject:function(){var b=new a.Vector3;return function(a){var c=this;return a.updateMatrixWorld(!0),this.makeEmpty(),a.traverse(function(a){if(void 0!==a.geometry&&void 0!==a.geometry.vertices)for(var d=a.geometry.vertices,e=0,f=d.length;f>e;e++)b.copy(d[e]),b.applyMatrix4(a.matrixWorld),c.expandByPoint(b)}),this}}(),copy:function(a){return this.min.copy(a.min),this.max.copy(a.max),this},makeEmpty:function(){return this.min.x=this.min.y=this.min.z=1/0,this.max.x=this.max.y=this.max.z=-1/0,this},empty:function(){return this.max.xthis.max.x||a.ythis.max.y||a.zthis.max.z?!1:!0},containsBox:function(a){return this.min.x<=a.min.x&&a.max.x<=this.max.x&&this.min.y<=a.min.y&&a.max.y<=this.max.y&&this.min.z<=a.min.z&&a.max.z<=this.max.z?!0:!1},getParameter:function(b,c){var d=c||new a.Vector3;return d.set((b.x-this.min.x)/(this.max.x-this.min.x),(b.y-this.min.y)/(this.max.y-this.min.y),(b.z-this.min.z)/(this.max.z-this.min.z))},isIntersectionBox:function(a){return a.max.xthis.max.x||a.max.ythis.max.y||a.max.zthis.max.z?!1:!0},clampPoint:function(b,c){var d=c||new a.Vector3;return d.copy(b).clamp(this.min,this.max)},distanceToPoint:function(){var b=new a.Vector3;return function(a){var c=b.copy(a).clamp(this.min,this.max);return c.sub(a).length()}}(),getBoundingSphere:function(){var b=new a.Vector3;return function(c){var d=c||new a.Sphere;return d.center=this.center(),d.radius=.5*this.size(b).length(),d}}(),intersect:function(a){return this.min.max(a.min),this.max.min(a.max),this},union:function(a){return this.min.min(a.min),this.max.max(a.max),this},applyMatrix4:function(){var b=[new a.Vector3,new a.Vector3,new a.Vector3,new a.Vector3,new a.Vector3,new a.Vector3,new a.Vector3,new a.Vector3];return function(a){return b[0].set(this.min.x,this.min.y,this.min.z).applyMatrix4(a),b[1].set(this.min.x,this.min.y,this.max.z).applyMatrix4(a),b[2].set(this.min.x,this.max.y,this.min.z).applyMatrix4(a),b[3].set(this.min.x,this.max.y,this.max.z).applyMatrix4(a),b[4].set(this.max.x,this.min.y,this.min.z).applyMatrix4(a),b[5].set(this.max.x,this.min.y,this.max.z).applyMatrix4(a),b[6].set(this.max.x,this.max.y,this.min.z).applyMatrix4(a),b[7].set(this.max.x,this.max.y,this.max.z).applyMatrix4(a),this.makeEmpty(),this.setFromPoints(b),this}}(),translate:function(a){return this.min.add(a),this.max.add(a),this},equals:function(a){return a.min.equals(this.min)&&a.max.equals(this.max)},clone:function(){return(new a.Box3).copy(this)}},a.Matrix3=function(a,b,c,d,e,f,g,h,i){this.elements=new Float32Array(9),this.set(void 0!==a?a:1,b||0,c||0,d||0,void 0!==e?e:1,f||0,g||0,h||0,void 0!==i?i:1)},a.Matrix3.prototype={constructor:a.Matrix3,set:function(a,b,c,d,e,f,g,h,i){var j=this.elements;return j[0]=a,j[3]=b,j[6]=c,j[1]=d,j[4]=e,j[7]=f,j[2]=g,j[5]=h,j[8]=i,this},identity:function(){return this.set(1,0,0,0,1,0,0,0,1),this},copy:function(a){var b=a.elements;return this.set(b[0],b[3],b[6],b[1],b[4],b[7],b[2],b[5],b[8]),this},multiplyVector3:function(a){return console.warn("DEPRECATED: Matrix3's .multiplyVector3() has been removed. Use vector.applyMatrix3( matrix ) instead."),a.applyMatrix3(this)},multiplyVector3Array:function(){var b=new a.Vector3;return function(a){for(var c=0,d=a.length;d>c;c+=3)b.x=a[c],b.y=a[c+1],b.z=a[c+2],b.applyMatrix3(this),a[c]=b.x,a[c+1]=b.y,a[c+2]=b.z;return a}}(),multiplyScalar:function(a){var b=this.elements;return b[0]*=a,b[3]*=a,b[6]*=a,b[1]*=a,b[4]*=a,b[7]*=a,b[2]*=a,b[5]*=a,b[8]*=a,this},determinant:function(){var a=this.elements,b=a[0],c=a[1],d=a[2],e=a[3],f=a[4],g=a[5],h=a[6],i=a[7],j=a[8];return b*f*j-b*g*i-c*e*j+c*g*h+d*e*i-d*f*h},getInverse:function(a,b){var c=a.elements,d=this.elements;d[0]=c[10]*c[5]-c[6]*c[9],d[1]=-c[10]*c[1]+c[2]*c[9],d[2]=c[6]*c[1]-c[2]*c[5],d[3]=-c[10]*c[4]+c[6]*c[8],d[4]=c[10]*c[0]-c[2]*c[8],d[5]=-c[6]*c[0]+c[2]*c[4],d[6]=c[9]*c[4]-c[5]*c[8],d[7]=-c[9]*c[0]+c[1]*c[8],d[8]=c[5]*c[0]-c[1]*c[4];var e=c[0]*d[0]+c[1]*d[3]+c[2]*d[6];if(0===e){var f="Matrix3.getInverse(): can't invert matrix, determinant is 0";if(b)throw new Error(f);return console.warn(f),this.identity(),this}return this.multiplyScalar(1/e),this},transpose:function(){var a,b=this.elements;return a=b[1],b[1]=b[3],b[3]=a,a=b[2],b[2]=b[6],b[6]=a,a=b[5],b[5]=b[7],b[7]=a,this},getNormalMatrix:function(a){return this.getInverse(a).transpose(),this},transposeIntoArray:function(a){var b=this.elements;return a[0]=b[0],a[1]=b[3],a[2]=b[6],a[3]=b[1],a[4]=b[4],a[5]=b[7],a[6]=b[2],a[7]=b[5],a[8]=b[8],this},fromArray:function(a){return this.elements.set(a),this},toArray:function(){var a=this.elements;return[a[0],a[1],a[2],a[3],a[4],a[5],a[6],a[7],a[8]]},clone:function(){var b=this.elements;return new a.Matrix3(b[0],b[3],b[6],b[1],b[4],b[7],b[2],b[5],b[8])}},a.Matrix4=function(a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p){this.elements=new Float32Array(16);var q=this.elements;q[0]=void 0!==a?a:1,q[4]=b||0,q[8]=c||0,q[12]=d||0,q[1]=e||0,q[5]=void 0!==f?f:1,q[9]=g||0,q[13]=h||0,q[2]=i||0,q[6]=j||0,q[10]=void 0!==k?k:1,q[14]=l||0,q[3]=m||0,q[7]=n||0,q[11]=o||0,q[15]=void 0!==p?p:1},a.Matrix4.prototype={constructor:a.Matrix4,set:function(a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p){var q=this.elements;return q[0]=a,q[4]=b,q[8]=c,q[12]=d,q[1]=e,q[5]=f,q[9]=g,q[13]=h,q[2]=i,q[6]=j,q[10]=k,q[14]=l,q[3]=m,q[7]=n,q[11]=o,q[15]=p,this},identity:function(){return this.set(1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1),this},copy:function(a){return this.elements.set(a.elements),this},extractPosition:function(a){return console.warn("DEPRECATED: Matrix4's .extractPosition() has been renamed to .copyPosition()."),this.copyPosition(a)},copyPosition:function(a){var b=this.elements,c=a.elements;return b[12]=c[12],b[13]=c[13],b[14]=c[14],this},extractRotation:function(){var b=new a.Vector3;return function(a){var c=this.elements,d=a.elements,e=1/b.set(d[0],d[1],d[2]).length(),f=1/b.set(d[4],d[5],d[6]).length(),g=1/b.set(d[8],d[9],d[10]).length();return c[0]=d[0]*e,c[1]=d[1]*e,c[2]=d[2]*e,c[4]=d[4]*f,c[5]=d[5]*f,c[6]=d[6]*f,c[8]=d[8]*g,c[9]=d[9]*g,c[10]=d[10]*g,this}}(),makeRotationFromEuler:function(b){b instanceof a.Euler==!1&&console.error("ERROR: Matrix's .makeRotationFromEuler() now expects a Euler rotation rather than a Vector3 and order. Please update your code.");var c=this.elements,d=b.x,e=b.y,f=b.z,g=Math.cos(d),h=Math.sin(d),i=Math.cos(e),j=Math.sin(e),k=Math.cos(f),l=Math.sin(f);if("XYZ"===b.order){var m=g*k,n=g*l,o=h*k,p=h*l;c[0]=i*k,c[4]=-i*l,c[8]=j,c[1]=n+o*j,c[5]=m-p*j,c[9]=-h*i,c[2]=p-m*j,c[6]=o+n*j,c[10]=g*i}else if("YXZ"===b.order){var q=i*k,r=i*l,s=j*k,t=j*l;c[0]=q+t*h,c[4]=s*h-r,c[8]=g*j,c[1]=g*l,c[5]=g*k,c[9]=-h,c[2]=r*h-s,c[6]=t+q*h,c[10]=g*i}else if("ZXY"===b.order){var q=i*k,r=i*l,s=j*k,t=j*l;c[0]=q-t*h,c[4]=-g*l,c[8]=s+r*h,c[1]=r+s*h,c[5]=g*k,c[9]=t-q*h,c[2]=-g*j,c[6]=h,c[10]=g*i}else if("ZYX"===b.order){var m=g*k,n=g*l,o=h*k,p=h*l;c[0]=i*k,c[4]=o*j-n,c[8]=m*j+p,c[1]=i*l,c[5]=p*j+m,c[9]=n*j-o,c[2]=-j,c[6]=h*i,c[10]=g*i}else if("YZX"===b.order){var u=g*i,v=g*j,w=h*i,x=h*j;c[0]=i*k,c[4]=x-u*l,c[8]=w*l+v,c[1]=l,c[5]=g*k,c[9]=-h*k,c[2]=-j*k,c[6]=v*l+w,c[10]=u-x*l}else if("XZY"===b.order){var u=g*i,v=g*j,w=h*i,x=h*j;c[0]=i*k,c[4]=-l,c[8]=j*k,c[1]=u*l+x,c[5]=g*k,c[9]=v*l-w,c[2]=w*l-v,c[6]=h*k,c[10]=x*l+u}return c[3]=0,c[7]=0,c[11]=0,c[12]=0,c[13]=0,c[14]=0,c[15]=1,this},setRotationFromQuaternion:function(a){return console.warn("DEPRECATED: Matrix4's .setRotationFromQuaternion() has been deprecated in favor of makeRotationFromQuaternion. Please update your code."),this.makeRotationFromQuaternion(a)},makeRotationFromQuaternion:function(a){var b=this.elements,c=a.x,d=a.y,e=a.z,f=a.w,g=c+c,h=d+d,i=e+e,j=c*g,k=c*h,l=c*i,m=d*h,n=d*i,o=e*i,p=f*g,q=f*h,r=f*i;return b[0]=1-(m+o),b[4]=k-r,b[8]=l+q,b[1]=k+r,b[5]=1-(j+o),b[9]=n-p,b[2]=l-q,b[6]=n+p,b[10]=1-(j+m),b[3]=0,b[7]=0,b[11]=0,b[12]=0,b[13]=0,b[14]=0,b[15]=1,this},lookAt:function(){var b=new a.Vector3,c=new a.Vector3,d=new a.Vector3;return function(a,e,f){var g=this.elements;return d.subVectors(a,e).normalize(),0===d.length()&&(d.z=1),b.crossVectors(f,d).normalize(),0===b.length()&&(d.x+=1e-4,b.crossVectors(f,d).normalize()),c.crossVectors(d,b),g[0]=b.x,g[4]=c.x,g[8]=d.x,g[1]=b.y,g[5]=c.y,g[9]=d.y,g[2]=b.z,g[6]=c.z,g[10]=d.z,this}}(),multiply:function(a,b){return void 0!==b?(console.warn("DEPRECATED: Matrix4's .multiply() now only accepts one argument. Use .multiplyMatrices( a, b ) instead."),this.multiplyMatrices(a,b)):this.multiplyMatrices(this,a)},multiplyMatrices:function(a,b){var c=a.elements,d=b.elements,e=this.elements,f=c[0],g=c[4],h=c[8],i=c[12],j=c[1],k=c[5],l=c[9],m=c[13],n=c[2],o=c[6],p=c[10],q=c[14],r=c[3],s=c[7],t=c[11],u=c[15],v=d[0],w=d[4],x=d[8],y=d[12],z=d[1],A=d[5],B=d[9],C=d[13],D=d[2],E=d[6],F=d[10],G=d[14],H=d[3],I=d[7],J=d[11],K=d[15];return e[0]=f*v+g*z+h*D+i*H,e[4]=f*w+g*A+h*E+i*I,e[8]=f*x+g*B+h*F+i*J,e[12]=f*y+g*C+h*G+i*K,e[1]=j*v+k*z+l*D+m*H,e[5]=j*w+k*A+l*E+m*I,e[9]=j*x+k*B+l*F+m*J,e[13]=j*y+k*C+l*G+m*K,e[2]=n*v+o*z+p*D+q*H,e[6]=n*w+o*A+p*E+q*I,e[10]=n*x+o*B+p*F+q*J,e[14]=n*y+o*C+p*G+q*K,e[3]=r*v+s*z+t*D+u*H,e[7]=r*w+s*A+t*E+u*I,e[11]=r*x+s*B+t*F+u*J,e[15]=r*y+s*C+t*G+u*K,this},multiplyToArray:function(a,b,c){var d=this.elements;return this.multiplyMatrices(a,b),c[0]=d[0],c[1]=d[1],c[2]=d[2],c[3]=d[3],c[4]=d[4],c[5]=d[5],c[6]=d[6],c[7]=d[7],c[8]=d[8],c[9]=d[9],c[10]=d[10],c[11]=d[11],c[12]=d[12],c[13]=d[13],c[14]=d[14],c[15]=d[15],this},multiplyScalar:function(a){var b=this.elements;return b[0]*=a,b[4]*=a,b[8]*=a,b[12]*=a,b[1]*=a,b[5]*=a,b[9]*=a,b[13]*=a,b[2]*=a,b[6]*=a,b[10]*=a,b[14]*=a,b[3]*=a,b[7]*=a,b[11]*=a,b[15]*=a,this},multiplyVector3:function(a){return console.warn("DEPRECATED: Matrix4's .multiplyVector3() has been removed. Use vector.applyMatrix4( matrix ) or vector.applyProjection( matrix ) instead."),a.applyProjection(this)},multiplyVector4:function(a){return console.warn("DEPRECATED: Matrix4's .multiplyVector4() has been removed. Use vector.applyMatrix4( matrix ) instead."),a.applyMatrix4(this)},multiplyVector3Array:function(){var b=new a.Vector3;return function(a){for(var c=0,d=a.length;d>c;c+=3)b.x=a[c],b.y=a[c+1],b.z=a[c+2],b.applyProjection(this),a[c]=b.x,a[c+1]=b.y,a[c+2]=b.z;return a}}(),rotateAxis:function(a){console.warn("DEPRECATED: Matrix4's .rotateAxis() has been removed. Use Vector3.transformDirection( matrix ) instead."),a.transformDirection(this)},crossVector:function(a){return console.warn("DEPRECATED: Matrix4's .crossVector() has been removed. Use vector.applyMatrix4( matrix ) instead."),a.applyMatrix4(this)},determinant:function(){var a=this.elements,b=a[0],c=a[4],d=a[8],e=a[12],f=a[1],g=a[5],h=a[9],i=a[13],j=a[2],k=a[6],l=a[10],m=a[14],n=a[3],o=a[7],p=a[11],q=a[15];return n*(+e*h*k-d*i*k-e*g*l+c*i*l+d*g*m-c*h*m)+o*(+b*h*m-b*i*l+e*f*l-d*f*m+d*i*j-e*h*j)+p*(+b*i*k-b*g*m-e*f*k+c*f*m+e*g*j-c*i*j)+q*(-d*g*j-b*h*k+b*g*l+d*f*k-c*f*l+c*h*j)},transpose:function(){var a,b=this.elements;return a=b[1],b[1]=b[4],b[4]=a,a=b[2],b[2]=b[8],b[8]=a,a=b[6],b[6]=b[9],b[9]=a,a=b[3],b[3]=b[12],b[12]=a,a=b[7],b[7]=b[13],b[13]=a,a=b[11],b[11]=b[14],b[14]=a,this},flattenToArray:function(a){var b=this.elements;return a[0]=b[0],a[1]=b[1],a[2]=b[2],a[3]=b[3],a[4]=b[4],a[5]=b[5],a[6]=b[6],a[7]=b[7],a[8]=b[8],a[9]=b[9],a[10]=b[10],a[11]=b[11],a[12]=b[12],a[13]=b[13],a[14]=b[14],a[15]=b[15],a},flattenToArrayOffset:function(a,b){var c=this.elements;return a[b]=c[0],a[b+1]=c[1],a[b+2]=c[2],a[b+3]=c[3],a[b+4]=c[4],a[b+5]=c[5],a[b+6]=c[6],a[b+7]=c[7],a[b+8]=c[8],a[b+9]=c[9],a[b+10]=c[10],a[b+11]=c[11],a[b+12]=c[12],a[b+13]=c[13],a[b+14]=c[14],a[b+15]=c[15],a},getPosition:function(){var b=new a.Vector3;return function(){console.warn("DEPRECATED: Matrix4's .getPosition() has been removed. Use Vector3.setFromMatrixPosition( matrix ) instead.");var a=this.elements;return b.set(a[12],a[13],a[14])}}(),setPosition:function(a){var b=this.elements;return b[12]=a.x,b[13]=a.y,b[14]=a.z,this},getInverse:function(a,b){var c=this.elements,d=a.elements,e=d[0],f=d[4],g=d[8],h=d[12],i=d[1],j=d[5],k=d[9],l=d[13],m=d[2],n=d[6],o=d[10],p=d[14],q=d[3],r=d[7],s=d[11],t=d[15];c[0]=k*p*r-l*o*r+l*n*s-j*p*s-k*n*t+j*o*t,c[4]=h*o*r-g*p*r-h*n*s+f*p*s+g*n*t-f*o*t,c[8]=g*l*r-h*k*r+h*j*s-f*l*s-g*j*t+f*k*t,c[12]=h*k*n-g*l*n-h*j*o+f*l*o+g*j*p-f*k*p,c[1]=l*o*q-k*p*q-l*m*s+i*p*s+k*m*t-i*o*t,c[5]=g*p*q-h*o*q+h*m*s-e*p*s-g*m*t+e*o*t,c[9]=h*k*q-g*l*q-h*i*s+e*l*s+g*i*t-e*k*t,c[13]=g*l*m-h*k*m+h*i*o-e*l*o-g*i*p+e*k*p,c[2]=j*p*q-l*n*q+l*m*r-i*p*r-j*m*t+i*n*t,c[6]=h*n*q-f*p*q-h*m*r+e*p*r+f*m*t-e*n*t,c[10]=f*l*q-h*j*q+h*i*r-e*l*r-f*i*t+e*j*t,c[14]=h*j*m-f*l*m-h*i*n+e*l*n+f*i*p-e*j*p,c[3]=k*n*q-j*o*q-k*m*r+i*o*r+j*m*s-i*n*s,c[7]=f*o*q-g*n*q+g*m*r-e*o*r-f*m*s+e*n*s,c[11]=g*j*q-f*k*q-g*i*r+e*k*r+f*i*s-e*j*s,c[15]=f*k*m-g*j*m+g*i*n-e*k*n-f*i*o+e*j*o; var u=e*c[0]+i*c[4]+m*c[8]+q*c[12];if(0==u){var v="Matrix4.getInverse(): can't invert matrix, determinant is 0";if(b)throw new Error(v);return console.warn(v),this.identity(),this}return this.multiplyScalar(1/u),this},translate:function(){console.warn("DEPRECATED: Matrix4's .translate() has been removed.")},rotateX:function(){console.warn("DEPRECATED: Matrix4's .rotateX() has been removed.")},rotateY:function(){console.warn("DEPRECATED: Matrix4's .rotateY() has been removed.")},rotateZ:function(){console.warn("DEPRECATED: Matrix4's .rotateZ() has been removed.")},rotateByAxis:function(){console.warn("DEPRECATED: Matrix4's .rotateByAxis() has been removed.")},scale:function(a){var b=this.elements,c=a.x,d=a.y,e=a.z;return b[0]*=c,b[4]*=d,b[8]*=e,b[1]*=c,b[5]*=d,b[9]*=e,b[2]*=c,b[6]*=d,b[10]*=e,b[3]*=c,b[7]*=d,b[11]*=e,this},getMaxScaleOnAxis:function(){var a=this.elements,b=a[0]*a[0]+a[1]*a[1]+a[2]*a[2],c=a[4]*a[4]+a[5]*a[5]+a[6]*a[6],d=a[8]*a[8]+a[9]*a[9]+a[10]*a[10];return Math.sqrt(Math.max(b,Math.max(c,d)))},makeTranslation:function(a,b,c){return this.set(1,0,0,a,0,1,0,b,0,0,1,c,0,0,0,1),this},makeRotationX:function(a){var b=Math.cos(a),c=Math.sin(a);return this.set(1,0,0,0,0,b,-c,0,0,c,b,0,0,0,0,1),this},makeRotationY:function(a){var b=Math.cos(a),c=Math.sin(a);return this.set(b,0,c,0,0,1,0,0,-c,0,b,0,0,0,0,1),this},makeRotationZ:function(a){var b=Math.cos(a),c=Math.sin(a);return this.set(b,-c,0,0,c,b,0,0,0,0,1,0,0,0,0,1),this},makeRotationAxis:function(a,b){var c=Math.cos(b),d=Math.sin(b),e=1-c,f=a.x,g=a.y,h=a.z,i=e*f,j=e*g;return this.set(i*f+c,i*g-d*h,i*h+d*g,0,i*g+d*h,j*g+c,j*h-d*f,0,i*h-d*g,j*h+d*f,e*h*h+c,0,0,0,0,1),this},makeScale:function(a,b,c){return this.set(a,0,0,0,0,b,0,0,0,0,c,0,0,0,0,1),this},compose:function(a,b,c){return this.makeRotationFromQuaternion(b),this.scale(c),this.setPosition(a),this},decompose:function(){var b=new a.Vector3,c=new a.Matrix4;return function(a,d,e){var f=this.elements,g=b.set(f[0],f[1],f[2]).length(),h=b.set(f[4],f[5],f[6]).length(),i=b.set(f[8],f[9],f[10]).length(),j=this.determinant();0>j&&(g=-g),a.x=f[12],a.y=f[13],a.z=f[14],c.elements.set(this.elements);var k=1/g,l=1/h,m=1/i;return c.elements[0]*=k,c.elements[1]*=k,c.elements[2]*=k,c.elements[4]*=l,c.elements[5]*=l,c.elements[6]*=l,c.elements[8]*=m,c.elements[9]*=m,c.elements[10]*=m,d.setFromRotationMatrix(c),e.x=g,e.y=h,e.z=i,this}}(),makeFrustum:function(a,b,c,d,e,f){var g=this.elements,h=2*e/(b-a),i=2*e/(d-c),j=(b+a)/(b-a),k=(d+c)/(d-c),l=-(f+e)/(f-e),m=-2*f*e/(f-e);return g[0]=h,g[4]=0,g[8]=j,g[12]=0,g[1]=0,g[5]=i,g[9]=k,g[13]=0,g[2]=0,g[6]=0,g[10]=l,g[14]=m,g[3]=0,g[7]=0,g[11]=-1,g[15]=0,this},makePerspective:function(b,c,d,e){var f=d*Math.tan(a.Math.degToRad(.5*b)),g=-f,h=g*c,i=f*c;return this.makeFrustum(h,i,g,f,d,e)},makeOrthographic:function(a,b,c,d,e,f){var g=this.elements,h=b-a,i=c-d,j=f-e,k=(b+a)/h,l=(c+d)/i,m=(f+e)/j;return g[0]=2/h,g[4]=0,g[8]=0,g[12]=-k,g[1]=0,g[5]=2/i,g[9]=0,g[13]=-l,g[2]=0,g[6]=0,g[10]=-2/j,g[14]=-m,g[3]=0,g[7]=0,g[11]=0,g[15]=1,this},fromArray:function(a){return this.elements.set(a),this},toArray:function(){var a=this.elements;return[a[0],a[1],a[2],a[3],a[4],a[5],a[6],a[7],a[8],a[9],a[10],a[11],a[12],a[13],a[14],a[15]]},clone:function(){var b=this.elements;return new a.Matrix4(b[0],b[4],b[8],b[12],b[1],b[5],b[9],b[13],b[2],b[6],b[10],b[14],b[3],b[7],b[11],b[15])}},a.Ray=function(b,c){this.origin=void 0!==b?b:new a.Vector3,this.direction=void 0!==c?c:new a.Vector3},a.Ray.prototype={constructor:a.Ray,set:function(a,b){return this.origin.copy(a),this.direction.copy(b),this},copy:function(a){return this.origin.copy(a.origin),this.direction.copy(a.direction),this},at:function(b,c){var d=c||new a.Vector3;return d.copy(this.direction).multiplyScalar(b).add(this.origin)},recast:function(){var b=new a.Vector3;return function(a){return this.origin.copy(this.at(a,b)),this}}(),closestPointToPoint:function(b,c){var d=c||new a.Vector3;d.subVectors(b,this.origin);var e=d.dot(this.direction);return 0>e?d.copy(this.origin):d.copy(this.direction).multiplyScalar(e).add(this.origin)},distanceToPoint:function(){var b=new a.Vector3;return function(a){var c=b.subVectors(a,this.origin).dot(this.direction);return 0>c?this.origin.distanceTo(a):(b.copy(this.direction).multiplyScalar(c).add(this.origin),b.distanceTo(a))}}(),distanceSqToSegment:function(a,b,c,d){var e,f,g,h,i=a.clone().add(b).multiplyScalar(.5),j=b.clone().sub(a).normalize(),k=.5*a.distanceTo(b),l=this.origin.clone().sub(i),m=-this.direction.dot(j),n=l.dot(this.direction),o=-l.dot(j),p=l.lengthSq(),q=Math.abs(1-m*m);if(q>=0)if(e=m*o-n,f=m*n-o,h=k*q,e>=0)if(f>=-h)if(h>=f){var r=1/q;e*=r,f*=r,g=e*(e+m*f+2*n)+f*(m*e+f+2*o)+p}else f=k,e=Math.max(0,-(m*f+n)),g=-e*e+f*(f+2*o)+p;else f=-k,e=Math.max(0,-(m*f+n)),g=-e*e+f*(f+2*o)+p;else-h>=f?(e=Math.max(0,-(-m*k+n)),f=e>0?-k:Math.min(Math.max(-k,-o),k),g=-e*e+f*(f+2*o)+p):h>=f?(e=0,f=Math.min(Math.max(-k,-o),k),g=f*(f+2*o)+p):(e=Math.max(0,-(m*k+n)),f=e>0?k:Math.min(Math.max(-k,-o),k),g=-e*e+f*(f+2*o)+p);else f=m>0?-k:k,e=Math.max(0,-(m*f+n)),g=-e*e+f*(f+2*o)+p;return c&&c.copy(this.direction.clone().multiplyScalar(e).add(this.origin)),d&&d.copy(j.clone().multiplyScalar(f).add(i)),g},isIntersectionSphere:function(a){return this.distanceToPoint(a.center)<=a.radius},isIntersectionPlane:function(a){var b=a.distanceToPoint(this.origin);if(0===b)return!0;var c=a.normal.dot(this.direction);return 0>c*b?!0:!1},distanceToPlane:function(a){var b=a.normal.dot(this.direction);if(0==b)return 0==a.distanceToPoint(this.origin)?0:null;var c=-(this.origin.dot(a.normal)+a.constant)/b;return c>=0?c:null},intersectPlane:function(a,b){var c=this.distanceToPlane(a);return null===c?null:this.at(c,b)},isIntersectionBox:function(){var b=new a.Vector3;return function(a){return null!==this.intersectBox(a,b)}}(),intersectBox:function(a,b){var c,d,e,f,g,h,i=1/this.direction.x,j=1/this.direction.y,k=1/this.direction.z,l=this.origin;return i>=0?(c=(a.min.x-l.x)*i,d=(a.max.x-l.x)*i):(c=(a.max.x-l.x)*i,d=(a.min.x-l.x)*i),j>=0?(e=(a.min.y-l.y)*j,f=(a.max.y-l.y)*j):(e=(a.max.y-l.y)*j,f=(a.min.y-l.y)*j),c>f||e>d?null:((e>c||c!==c)&&(c=e),(d>f||d!==d)&&(d=f),k>=0?(g=(a.min.z-l.z)*k,h=(a.max.z-l.z)*k):(g=(a.max.z-l.z)*k,h=(a.min.z-l.z)*k),c>h||g>d?null:((g>c||c!==c)&&(c=g),(d>h||d!==d)&&(d=h),0>d?null:this.at(c>=0?c:d,b)))},intersectTriangle:function(){var b=new a.Vector3,c=new a.Vector3,d=new a.Vector3,e=new a.Vector3;return function(a,f,g,h,i){c.subVectors(f,a),d.subVectors(g,a),e.crossVectors(c,d);var j,k=this.direction.dot(e);if(k>0){if(h)return null;j=1}else{if(!(0>k))return null;j=-1,k=-k}b.subVectors(this.origin,a);var l=j*this.direction.dot(d.crossVectors(b,d));if(0>l)return null;var m=j*this.direction.dot(c.cross(b));if(0>m)return null;if(l+m>k)return null;var n=-j*b.dot(e);return 0>n?null:this.at(n/k,i)}}(),applyMatrix4:function(a){return this.direction.add(this.origin).applyMatrix4(a),this.origin.applyMatrix4(a),this.direction.sub(this.origin),this.direction.normalize(),this},equals:function(a){return a.origin.equals(this.origin)&&a.direction.equals(this.direction)},clone:function(){return(new a.Ray).copy(this)}},a.Sphere=function(b,c){this.center=void 0!==b?b:new a.Vector3,this.radius=void 0!==c?c:0},a.Sphere.prototype={constructor:a.Sphere,set:function(a,b){return this.center.copy(a),this.radius=b,this},setFromPoints:function(){var b=new a.Box3;return function(a,c){var d=this.center;void 0!==c?d.copy(c):b.setFromPoints(a).center(d);for(var e=0,f=0,g=a.length;g>f;f++)e=Math.max(e,d.distanceToSquared(a[f]));return this.radius=Math.sqrt(e),this}}(),copy:function(a){return this.center.copy(a.center),this.radius=a.radius,this},empty:function(){return this.radius<=0},containsPoint:function(a){return a.distanceToSquared(this.center)<=this.radius*this.radius},distanceToPoint:function(a){return a.distanceTo(this.center)-this.radius},intersectsSphere:function(a){var b=this.radius+a.radius;return a.center.distanceToSquared(this.center)<=b*b},clampPoint:function(b,c){var d=this.center.distanceToSquared(b),e=c||new a.Vector3;return e.copy(b),d>this.radius*this.radius&&(e.sub(this.center).normalize(),e.multiplyScalar(this.radius).add(this.center)),e},getBoundingBox:function(b){var c=b||new a.Box3;return c.set(this.center,this.center),c.expandByScalar(this.radius),c},applyMatrix4:function(a){return this.center.applyMatrix4(a),this.radius=this.radius*a.getMaxScaleOnAxis(),this},translate:function(a){return this.center.add(a),this},equals:function(a){return a.center.equals(this.center)&&a.radius===this.radius},clone:function(){return(new a.Sphere).copy(this)}},a.Frustum=function(b,c,d,e,f,g){this.planes=[void 0!==b?b:new a.Plane,void 0!==c?c:new a.Plane,void 0!==d?d:new a.Plane,void 0!==e?e:new a.Plane,void 0!==f?f:new a.Plane,void 0!==g?g:new a.Plane]},a.Frustum.prototype={constructor:a.Frustum,set:function(a,b,c,d,e,f){var g=this.planes;return g[0].copy(a),g[1].copy(b),g[2].copy(c),g[3].copy(d),g[4].copy(e),g[5].copy(f),this},copy:function(a){for(var b=this.planes,c=0;6>c;c++)b[c].copy(a.planes[c]);return this},setFromMatrix:function(a){var b=this.planes,c=a.elements,d=c[0],e=c[1],f=c[2],g=c[3],h=c[4],i=c[5],j=c[6],k=c[7],l=c[8],m=c[9],n=c[10],o=c[11],p=c[12],q=c[13],r=c[14],s=c[15];return b[0].setComponents(g-d,k-h,o-l,s-p).normalize(),b[1].setComponents(g+d,k+h,o+l,s+p).normalize(),b[2].setComponents(g+e,k+i,o+m,s+q).normalize(),b[3].setComponents(g-e,k-i,o-m,s-q).normalize(),b[4].setComponents(g-f,k-j,o-n,s-r).normalize(),b[5].setComponents(g+f,k+j,o+n,s+r).normalize(),this},intersectsObject:function(){var b=new a.Sphere;return function(a){var c=a.geometry;return null===c.boundingSphere&&c.computeBoundingSphere(),b.copy(c.boundingSphere),b.applyMatrix4(a.matrixWorld),this.intersectsSphere(b)}}(),intersectsSphere:function(a){for(var b=this.planes,c=a.center,d=-a.radius,e=0;6>e;e++){var f=b[e].distanceToPoint(c);if(d>f)return!1}return!0},intersectsBox:function(){var b=new a.Vector3,c=new a.Vector3;return function(a){for(var d=this.planes,e=0;6>e;e++){var f=d[e];b.x=f.normal.x>0?a.min.x:a.max.x,c.x=f.normal.x>0?a.max.x:a.min.x,b.y=f.normal.y>0?a.min.y:a.max.y,c.y=f.normal.y>0?a.max.y:a.min.y,b.z=f.normal.z>0?a.min.z:a.max.z,c.z=f.normal.z>0?a.max.z:a.min.z;var g=f.distanceToPoint(b),h=f.distanceToPoint(c);if(0>g&&0>h)return!1}return!0}}(),containsPoint:function(a){for(var b=this.planes,c=0;6>c;c++)if(b[c].distanceToPoint(a)<0)return!1;return!0},clone:function(){return(new a.Frustum).copy(this)}},a.Plane=function(b,c){this.normal=void 0!==b?b:new a.Vector3(1,0,0),this.constant=void 0!==c?c:0},a.Plane.prototype={constructor:a.Plane,set:function(a,b){return this.normal.copy(a),this.constant=b,this},setComponents:function(a,b,c,d){return this.normal.set(a,b,c),this.constant=d,this},setFromNormalAndCoplanarPoint:function(a,b){return this.normal.copy(a),this.constant=-b.dot(this.normal),this},setFromCoplanarPoints:function(){var b=new a.Vector3,c=new a.Vector3;return function(a,d,e){var f=b.subVectors(e,d).cross(c.subVectors(a,d)).normalize();return this.setFromNormalAndCoplanarPoint(f,a),this}}(),copy:function(a){return this.normal.copy(a.normal),this.constant=a.constant,this},normalize:function(){var a=1/this.normal.length();return this.normal.multiplyScalar(a),this.constant*=a,this},negate:function(){return this.constant*=-1,this.normal.negate(),this},distanceToPoint:function(a){return this.normal.dot(a)+this.constant},distanceToSphere:function(a){return this.distanceToPoint(a.center)-a.radius},projectPoint:function(a,b){return this.orthoPoint(a,b).sub(a).negate()},orthoPoint:function(b,c){var d=this.distanceToPoint(b),e=c||new a.Vector3;return e.copy(this.normal).multiplyScalar(d)},isIntersectionLine:function(a){var b=this.distanceToPoint(a.start),c=this.distanceToPoint(a.end);return 0>b&&c>0||0>c&&b>0},intersectLine:function(){var b=new a.Vector3;return function(c,d){var e=d||new a.Vector3,f=c.delta(b),g=this.normal.dot(f);if(0==g)return 0==this.distanceToPoint(c.start)?e.copy(c.start):void 0;var h=-(c.start.dot(this.normal)+this.constant)/g;return 0>h||h>1?void 0:e.copy(f).multiplyScalar(h).add(c.start)}}(),coplanarPoint:function(b){var c=b||new a.Vector3;return c.copy(this.normal).multiplyScalar(-this.constant)},applyMatrix4:function(){var b=new a.Vector3,c=new a.Vector3,d=new a.Matrix3;return function(a,e){var f=e||d.getNormalMatrix(a),g=b.copy(this.normal).applyMatrix3(f),h=this.coplanarPoint(c);return h.applyMatrix4(a),this.setFromNormalAndCoplanarPoint(g,h),this}}(),translate:function(a){return this.constant=this.constant-a.dot(this.normal),this},equals:function(a){return a.normal.equals(this.normal)&&a.constant==this.constant},clone:function(){return(new a.Plane).copy(this)}},a.Math={PI2:2*Math.PI,generateUUID:function(){var a,b="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz".split(""),c=new Array(36),d=0;return function(){for(var e=0;36>e;e++)8==e||13==e||18==e||23==e?c[e]="-":14==e?c[e]="4":(2>=d&&(d=33554432+16777216*Math.random()|0),a=15&d,d>>=4,c[e]=b[19==e?3&a|8:a]);return c.join("")}}(),clamp:function(a,b,c){return b>a?b:a>c?c:a},clampBottom:function(a,b){return b>a?b:a},mapLinear:function(a,b,c,d,e){return d+(a-b)*(e-d)/(c-b)},smoothstep:function(a,b,c){return b>=a?0:a>=c?1:(a=(a-b)/(c-b),a*a*(3-2*a))},smootherstep:function(a,b,c){return b>=a?0:a>=c?1:(a=(a-b)/(c-b),a*a*a*(a*(6*a-15)+10))},random16:function(){return(65280*Math.random()+255*Math.random())/65535},randInt:function(a,b){return a+Math.floor(Math.random()*(b-a+1))},randFloat:function(a,b){return a+Math.random()*(b-a)},randFloatSpread:function(a){return a*(.5-Math.random())},sign:function(a){return 0>a?-1:a>0?1:0},degToRad:function(){var a=Math.PI/180;return function(b){return b*a}}(),radToDeg:function(){var a=180/Math.PI;return function(b){return b*a}}(),isPowerOfTwo:function(a){return 0===(a&a-1)&&0!==a}},a.Spline=function(b){function c(a,b,c,d,e,f,g){var h=.5*(c-a),i=.5*(d-b);return(2*(b-c)+h+i)*g+(-3*(b-c)-2*h-i)*f+h*e+b}this.points=b;var d,e,f,g,h,i,j,k,l,m=[],n={x:0,y:0,z:0};this.initFromArray=function(a){this.points=[];for(var b=0;bthis.points.length-2?this.points.length-1:e+1,m[3]=e>this.points.length-3?this.points.length-1:e+2,i=this.points[m[0]],j=this.points[m[1]],k=this.points[m[2]],l=this.points[m[3]],g=f*f,h=f*g,n.x=c(i.x,j.x,k.x,l.x,f,g,h),n.y=c(i.y,j.y,k.y,l.y,f,g,h),n.z=c(i.z,j.z,k.z,l.z,f,g,h),n},this.getControlPointsArray=function(){var a,b,c=this.points.length,d=[];for(a=0;c>a;a++)b=this.points[a],d[a]=[b.x,b.y,b.z];return d},this.getLength=function(b){var c,d,e,f,g=0,h=0,i=0,j=new a.Vector3,k=new a.Vector3,l=[],m=0;for(l[0]=0,b||(b=100),e=this.points.length*b,j.copy(this.points[0]),c=1;e>c;c++)d=c/e,f=this.getPoint(d),k.copy(f),m+=k.distanceTo(j),j.copy(f),g=(this.points.length-1)*d,h=Math.floor(g),h!=i&&(l[h]=m,i=h);return l[l.length]=m,{chunks:l,total:m}},this.reparametrizeByArcLength=function(b){var c,d,e,f,g,h,i,j,k=[],l=new a.Vector3,m=this.getLength();for(k.push(l.copy(this.points[0]).clone()),c=1;cd;d++)e=f+d*(1/i)*(g-f),j=this.getPoint(e),k.push(l.copy(j).clone());k.push(l.copy(this.points[c]).clone())}this.points=k}},a.Triangle=function(b,c,d){this.a=void 0!==b?b:new a.Vector3,this.b=void 0!==c?c:new a.Vector3,this.c=void 0!==d?d:new a.Vector3},a.Triangle.normal=function(){var b=new a.Vector3;return function(c,d,e,f){var g=f||new a.Vector3;g.subVectors(e,d),b.subVectors(c,d),g.cross(b);var h=g.lengthSq();return h>0?g.multiplyScalar(1/Math.sqrt(h)):g.set(0,0,0)}}(),a.Triangle.barycoordFromPoint=function(){var b=new a.Vector3,c=new a.Vector3,d=new a.Vector3;return function(e,f,g,h,i){b.subVectors(h,f),c.subVectors(g,f),d.subVectors(e,f);var j=b.dot(b),k=b.dot(c),l=b.dot(d),m=c.dot(c),n=c.dot(d),o=j*m-k*k,p=i||new a.Vector3;if(0==o)return p.set(-2,-1,-1);var q=1/o,r=(m*l-k*n)*q,s=(j*n-k*l)*q;return p.set(1-r-s,s,r)}}(),a.Triangle.containsPoint=function(){var b=new a.Vector3;return function(c,d,e,f){var g=a.Triangle.barycoordFromPoint(c,d,e,f,b);return g.x>=0&&g.y>=0&&g.x+g.y<=1}}(),a.Triangle.prototype={constructor:a.Triangle,set:function(a,b,c){return this.a.copy(a),this.b.copy(b),this.c.copy(c),this},setFromPointsAndIndices:function(a,b,c,d){return this.a.copy(a[b]),this.b.copy(a[c]),this.c.copy(a[d]),this},copy:function(a){return this.a.copy(a.a),this.b.copy(a.b),this.c.copy(a.c),this},area:function(){var b=new a.Vector3,c=new a.Vector3;return function(){return b.subVectors(this.c,this.b),c.subVectors(this.a,this.b),.5*b.cross(c).length()}}(),midpoint:function(b){var c=b||new a.Vector3;return c.addVectors(this.a,this.b).add(this.c).multiplyScalar(1/3)},normal:function(b){return a.Triangle.normal(this.a,this.b,this.c,b)},plane:function(b){var c=b||new a.Plane;return c.setFromCoplanarPoints(this.a,this.b,this.c)},barycoordFromPoint:function(b,c){return a.Triangle.barycoordFromPoint(b,this.a,this.b,this.c,c)},containsPoint:function(b){return a.Triangle.containsPoint(b,this.a,this.b,this.c)},equals:function(a){return a.a.equals(this.a)&&a.b.equals(this.b)&&a.c.equals(this.c)},clone:function(){return(new a.Triangle).copy(this)}},a.Vertex=function(a){return console.warn("THREE.Vertex has been DEPRECATED. Use THREE.Vector3 instead."),a},a.UV=function(b,c){return console.warn("THREE.UV has been DEPRECATED. Use THREE.Vector2 instead."),new a.Vector2(b,c)},a.Clock=function(a){this.autoStart=void 0!==a?a:!0,this.startTime=0,this.oldTime=0,this.elapsedTime=0,this.running=!1},a.Clock.prototype={constructor:a.Clock,start:function(){this.startTime=void 0!==self.performance&&void 0!==self.performance.now?self.performance.now():Date.now(),this.oldTime=this.startTime,this.running=!0},stop:function(){this.getElapsedTime(),this.running=!1},getElapsedTime:function(){return this.getDelta(),this.elapsedTime},getDelta:function(){var a=0;if(this.autoStart&&!this.running&&this.start(),this.running){var b=void 0!==self.performance&&void 0!==self.performance.now?self.performance.now():Date.now();a=.001*(b-this.oldTime),this.oldTime=b,this.elapsedTime+=a}return a}},a.EventDispatcher=function(){},a.EventDispatcher.prototype={constructor:a.EventDispatcher,apply:function(b){b.addEventListener=a.EventDispatcher.prototype.addEventListener,b.hasEventListener=a.EventDispatcher.prototype.hasEventListener,b.removeEventListener=a.EventDispatcher.prototype.removeEventListener,b.dispatchEvent=a.EventDispatcher.prototype.dispatchEvent},addEventListener:function(a,b){void 0===this._listeners&&(this._listeners={});var c=this._listeners;void 0===c[a]&&(c[a]=[]),-1===c[a].indexOf(b)&&c[a].push(b)},hasEventListener:function(a,b){if(void 0===this._listeners)return!1;var c=this._listeners;return void 0!==c[a]&&-1!==c[a].indexOf(b)?!0:!1},removeEventListener:function(a,b){if(void 0!==this._listeners){var c=this._listeners,d=c[a];if(void 0!==d){var e=d.indexOf(b);-1!==e&&d.splice(e,1)}}},dispatchEvent:function(){var a=[];return function(b){if(void 0!==this._listeners){var c=this._listeners,d=c[b.type];if(void 0!==d){b.target=this;for(var e=d.length,f=0;e>f;f++)a[f]=d[f];for(var f=0;e>f;f++)a[f].call(this,b)}}}}()},function(a){a.Raycaster=function(b,c,d,e){this.ray=new a.Ray(b,c),this.near=d||0,this.far=e||1/0};var b=new a.Sphere,c=new a.Ray,d=(new a.Plane,new a.Vector3,new a.Vector3),e=new a.Matrix4,f=function(a,b){return a.distance-b.distance},g=new a.Vector3,h=new a.Vector3,i=new a.Vector3,j=function(f,k,l){if(f instanceof a.Sprite){d.setFromMatrixPosition(f.matrixWorld);var m=k.ray.distanceToPoint(d);if(m>f.scale.x)return l;l.push({distance:m,point:f.position,face:null,object:f})}else if(f instanceof a.LOD){d.setFromMatrixPosition(f.matrixWorld);var m=k.ray.origin.distanceTo(d);j(f.getObjectForDistance(m),k,l)}else if(f instanceof a.Mesh){var n=f.geometry;if(null===n.boundingSphere&&n.computeBoundingSphere(),b.copy(n.boundingSphere),b.applyMatrix4(f.matrixWorld),k.ray.isIntersectionSphere(b)===!1)return l;if(e.getInverse(f.matrixWorld),c.copy(k.ray).applyMatrix4(e),null!==n.boundingBox&&c.isIntersectionBox(n.boundingBox)===!1)return l;if(n instanceof a.BufferGeometry){var o=f.material;if(void 0===o)return l;var p,q,r,s=n.attributes,t=k.precision;if(void 0!==s.index)for(var u=n.offsets,v=s.index.array,w=s.position.array,x=0,y=u.length;y>x;++x)for(var z=u[x].start,A=u[x].count,B=u[x].index,C=z,D=z+A;D>C;C+=3){if(p=B+v[C],q=B+v[C+1],r=B+v[C+2],g.set(w[3*p],w[3*p+1],w[3*p+2]),h.set(w[3*q],w[3*q+1],w[3*q+2]),i.set(w[3*r],w[3*r+1],w[3*r+2]),o.side===a.BackSide)var E=c.intersectTriangle(i,h,g,!0);else var E=c.intersectTriangle(g,h,i,o.side!==a.DoubleSide);if(null!==E){E.applyMatrix4(f.matrixWorld);var m=k.ray.origin.distanceTo(E);t>m||mk.far||l.push({distance:m,point:E,indices:[p,q,r],face:null,faceIndex:null,object:f})}}else for(var u=n.offsets,w=s.position.array,C=0,D=s.position.array.length;D>C;C+=3){if(p=C,q=C+1,r=C+2,g.set(w[3*p],w[3*p+1],w[3*p+2]),h.set(w[3*q],w[3*q+1],w[3*q+2]),i.set(w[3*r],w[3*r+1],w[3*r+2]),o.side===a.BackSide)var E=c.intersectTriangle(i,h,g,!0);else var E=c.intersectTriangle(g,h,i,o.side!==a.DoubleSide);if(null!==E){E.applyMatrix4(f.matrixWorld);var m=k.ray.origin.distanceTo(E);t>m||mk.far||l.push({distance:m,point:E,indices:[p,q,r],face:null,faceIndex:null,object:f})}}}else if(n instanceof a.Geometry)for(var p,q,r,F=f.material instanceof a.MeshFaceMaterial,G=F===!0?f.material.materials:null,t=k.precision,H=n.vertices,I=0,J=n.faces.length;J>I;I++){var K=n.faces[I],o=F===!0?G[K.materialIndex]:f.material;if(void 0!==o){if(p=H[K.a],q=H[K.b],r=H[K.c],o.morphTargets===!0){var L=n.morphTargets,M=f.morphTargetInfluences;g.set(0,0,0),h.set(0,0,0),i.set(0,0,0);for(var N=0,O=L.length;O>N;N++){var P=M[N];if(0!==P){var Q=L[N].vertices;g.x+=(Q[K.a].x-p.x)*P,g.y+=(Q[K.a].y-p.y)*P,g.z+=(Q[K.a].z-p.z)*P,h.x+=(Q[K.b].x-q.x)*P,h.y+=(Q[K.b].y-q.y)*P,h.z+=(Q[K.b].z-q.z)*P,i.x+=(Q[K.c].x-r.x)*P,i.y+=(Q[K.c].y-r.y)*P,i.z+=(Q[K.c].z-r.z)*P}}g.add(p),h.add(q),i.add(r),p=g,q=h,r=i}if(o.side===a.BackSide)var E=c.intersectTriangle(r,q,p,!0);else var E=c.intersectTriangle(p,q,r,o.side!==a.DoubleSide);if(null!==E){E.applyMatrix4(f.matrixWorld);var m=k.ray.origin.distanceTo(E);t>m||mk.far||l.push({distance:m,point:E,face:K,faceIndex:I,object:f})}}}}else if(f instanceof a.Line){var t=k.linePrecision,R=t*t,n=f.geometry;if(null===n.boundingSphere&&n.computeBoundingSphere(),b.copy(n.boundingSphere),b.applyMatrix4(f.matrixWorld),k.ray.isIntersectionSphere(b)===!1)return l;if(e.getInverse(f.matrixWorld),c.copy(k.ray).applyMatrix4(e),n instanceof a.Geometry)for(var H=n.vertices,S=H.length,T=new a.Vector3,U=new a.Vector3,V=f.type===a.LineStrip?1:2,C=0;S-1>C;C+=V){var W=c.distanceSqToSegment(H[C],H[C+1],U,T);if(!(W>R)){var m=c.origin.distanceTo(U);mk.far||l.push({distance:m,point:T.clone().applyMatrix4(f.matrixWorld),face:null,faceIndex:null,object:f})}}}},k=function(a,b,c){for(var d=a.getDescendants(),e=0,f=d.length;f>e;e++)j(d[e],b,c)};a.Raycaster.prototype.precision=1e-4,a.Raycaster.prototype.linePrecision=1,a.Raycaster.prototype.set=function(a,b){this.ray.set(a,b)},a.Raycaster.prototype.intersectObject=function(a,b){var c=[];return b===!0&&k(a,this,c),j(a,this,c),c.sort(f),c},a.Raycaster.prototype.intersectObjects=function(a,b){for(var c=[],d=0,e=a.length;e>d;d++)j(a[d],this,c),b===!0&&k(a[d],this,c);return c.sort(f),c}}(a),a.Object3D=function(){this.id=a.Object3DIdCount++,this.uuid=a.Math.generateUUID(),this.name="",this.parent=void 0,this.children=[],this.up=new a.Vector3(0,1,0),this.position=new a.Vector3,this._rotation=new a.Euler,this._quaternion=new a.Quaternion,this.scale=new a.Vector3(1,1,1),this._rotation._quaternion=this.quaternion,this._quaternion._euler=this.rotation,this.renderDepth=null,this.rotationAutoUpdate=!0,this.matrix=new a.Matrix4,this.matrixWorld=new a.Matrix4,this.matrixAutoUpdate=!0,this.matrixWorldNeedsUpdate=!0,this.visible=!0,this.castShadow=!1,this.receiveShadow=!1,this.frustumCulled=!0,this.userData={}},a.Object3D.prototype={constructor:a.Object3D,get rotation(){return this._rotation},set rotation(a){this._rotation=a,this._rotation._quaternion=this._quaternion,this._quaternion._euler=this._rotation,this._rotation._updateQuaternion()},get quaternion(){return this._quaternion},set quaternion(a){this._quaternion=a,this._quaternion._euler=this._rotation,this._rotation._quaternion=this._quaternion,this._quaternion._updateEuler()},get eulerOrder(){return console.warn("DEPRECATED: Object3D's .eulerOrder has been moved to Object3D's .rotation.order."),this.rotation.order},set eulerOrder(a){console.warn("DEPRECATED: Object3D's .eulerOrder has been moved to Object3D's .rotation.order."),this.rotation.order=a},get useQuaternion(){console.warn("DEPRECATED: Object3D's .useQuaternion has been removed. The library now uses quaternions by default.")},set useQuaternion(a){console.warn("DEPRECATED: Object3D's .useQuaternion has been removed. The library now uses quaternions by default.")},applyMatrix:function(a){this.matrix.multiplyMatrices(a,this.matrix),this.matrix.decompose(this.position,this.quaternion,this.scale)},setRotationFromAxisAngle:function(a,b){this.quaternion.setFromAxisAngle(a,b)},setRotationFromEuler:function(a){this.quaternion.setFromEuler(a,!0)},setRotationFromMatrix:function(a){this.quaternion.setFromRotationMatrix(a)},setRotationFromQuaternion:function(a){this.quaternion.copy(a)},rotateOnAxis:function(){var b=new a.Quaternion;return function(a,c){return b.setFromAxisAngle(a,c),this.quaternion.multiply(b),this}}(),rotateX:function(){var b=new a.Vector3(1,0,0);return function(a){return this.rotateOnAxis(b,a)}}(),rotateY:function(){var b=new a.Vector3(0,1,0);return function(a){return this.rotateOnAxis(b,a)}}(),rotateZ:function(){var b=new a.Vector3(0,0,1);return function(a){return this.rotateOnAxis(b,a)}}(),translateOnAxis:function(){var b=new a.Vector3;return function(a,c){return b.copy(a),b.applyQuaternion(this.quaternion),this.position.add(b.multiplyScalar(c)),this}}(),translate:function(a,b){return console.warn("DEPRECATED: Object3D's .translate() has been removed. Use .translateOnAxis( axis, distance ) instead. Note args have been changed."),this.translateOnAxis(b,a)},translateX:function(){var b=new a.Vector3(1,0,0);return function(a){return this.translateOnAxis(b,a)}}(),translateY:function(){var b=new a.Vector3(0,1,0);return function(a){return this.translateOnAxis(b,a)}}(),translateZ:function(){var b=new a.Vector3(0,0,1);return function(a){return this.translateOnAxis(b,a)}}(),localToWorld:function(a){return a.applyMatrix4(this.matrixWorld)},worldToLocal:function(){var b=new a.Matrix4;return function(a){return a.applyMatrix4(b.getInverse(this.matrixWorld))}}(),lookAt:function(){var b=new a.Matrix4;return function(a){b.lookAt(a,this.position,this.up),this.quaternion.setFromRotationMatrix(b)}}(),add:function(b){if(b===this)return void console.warn("THREE.Object3D.add: An object can't be added as a child of itself.");if(b instanceof a.Object3D){void 0!==b.parent&&b.parent.remove(b),b.parent=this,b.dispatchEvent({type:"added"}),this.children.push(b);for(var c=this;void 0!==c.parent;)c=c.parent;void 0!==c&&c instanceof a.Scene&&c.__addObject(b)}},remove:function(b){var c=this.children.indexOf(b);if(-1!==c){b.parent=void 0,b.dispatchEvent({type:"removed"}),this.children.splice(c,1);for(var d=this;void 0!==d.parent;)d=d.parent;void 0!==d&&d instanceof a.Scene&&d.__removeObject(b)}},traverse:function(a){a(this);for(var b=0,c=this.children.length;c>b;b++)this.children[b].traverse(a)},getObjectById:function(a,b){for(var c=0,d=this.children.length;d>c;c++){var e=this.children[c];if(e.id===a)return e;if(b===!0&&(e=e.getObjectById(a,b),void 0!==e))return e}return void 0},getObjectByName:function(a,b){for(var c=0,d=this.children.length;d>c;c++){var e=this.children[c];if(e.name===a)return e;if(b===!0&&(e=e.getObjectByName(a,b),void 0!==e))return e}return void 0},getChildByName:function(a,b){return console.warn("DEPRECATED: Object3D's .getChildByName() has been renamed to .getObjectByName()."),this.getObjectByName(a,b)},getDescendants:function(a){void 0===a&&(a=[]),Array.prototype.push.apply(a,this.children);for(var b=0,c=this.children.length;c>b;b++)this.children[b].getDescendants(a);return a},updateMatrix:function(){this.matrix.compose(this.position,this.quaternion,this.scale),this.matrixWorldNeedsUpdate=!0},updateMatrixWorld:function(a){this.matrixAutoUpdate===!0&&this.updateMatrix(),(this.matrixWorldNeedsUpdate===!0||a===!0)&&(void 0===this.parent?this.matrixWorld.copy(this.matrix):this.matrixWorld.multiplyMatrices(this.parent.matrixWorld,this.matrix),this.matrixWorldNeedsUpdate=!1,a=!0);for(var b=0,c=this.children.length;c>b;b++)this.children[b].updateMatrixWorld(a)},clone:function(b,c){if(void 0===b&&(b=new a.Object3D),void 0===c&&(c=!0),b.name=this.name,b.up.copy(this.up),b.position.copy(this.position),b.quaternion.copy(this.quaternion),b.scale.copy(this.scale),b.renderDepth=this.renderDepth,b.rotationAutoUpdate=this.rotationAutoUpdate,b.matrix.copy(this.matrix),b.matrixWorld.copy(this.matrixWorld),b.matrixAutoUpdate=this.matrixAutoUpdate,b.matrixWorldNeedsUpdate=this.matrixWorldNeedsUpdate,b.visible=this.visible,b.castShadow=this.castShadow,b.receiveShadow=this.receiveShadow,b.frustumCulled=this.frustumCulled,b.userData=JSON.parse(JSON.stringify(this.userData)),c===!0)for(var d=0;d=0&&f>=0&&g>=0&&h>=0?!0:0>e&&0>f||0>g&&0>h?!1:(0>e?c=Math.max(c,e/(e-f)):0>f&&(d=Math.min(d,e/(e-f))),0>g?c=Math.max(c,g/(g-h)):0>h&&(d=Math.min(d,g/(g-h))),c>d?!1:(a.lerp(b,c),b.lerp(a,1-d),!0))}var i,j,k,l,m,n,o,p,q,r,s,t=[],u=0,v=[],w=0,x=[],y=0,z=[],A=0,B=[],C=0,D={objects:[],lights:[],elements:[]},E=new a.Vector3,F=new a.Vector3,G=new a.Vector3,H=new a.Vector3,I=new a.Vector4,J=new a.Box3(new a.Vector3(-1,-1,-1),new a.Vector3(1,1,1)),K=new a.Box3,L=new Array(3),M=(new Array(4),new a.Matrix4),N=new a.Matrix4,O=new a.Matrix4,P=new a.Matrix3,Q=new a.Frustum,R=new a.Vector4,S=new a.Vector4;this.projectVector=function(a,b){return b.matrixWorldInverse.getInverse(b.matrixWorld),N.multiplyMatrices(b.projectionMatrix,b.matrixWorldInverse),a.applyProjection(N)},this.unprojectVector=function(){var b=new a.Matrix4;return function(a,c){return b.getInverse(c.projectionMatrix),N.multiplyMatrices(c.matrixWorld,b),a.applyProjection(N)}}(),this.pickingRay=function(b,c){b.z=-1;var d=new a.Vector3(b.x,b.y,1);return this.unprojectVector(b,c),this.unprojectVector(d,c),d.sub(b).normalize(),new a.Raycaster(b,d)};var T=function(c){if(c.visible!==!1){c instanceof a.Light?D.lights.push(c):(c instanceof a.Mesh||c instanceof a.Line||c instanceof a.Sprite)&&(c.frustumCulled===!1||Q.intersectsObject(c)===!0)&&(i=b(),i.id=c.id,i.object=c,null!==c.renderDepth?i.z=c.renderDepth:(H.setFromMatrixPosition(c.matrixWorld),H.applyProjection(N),i.z=H.z),D.objects.push(i));for(var d=0,e=c.children.length;e>d;d++)T(c.children[d])}},U=function(a,b){j=0,D.objects.length=0,D.lights.length=0,T(a),b===!0&&D.objects.sort(g)},V=function(){var b=[],f=null,g=new a.Matrix3,h=function(a){f=a,g.getNormalMatrix(f.matrixWorld),b.length=0 diff --git a/build/brainbrowser-2.2.0/brainbrowser.volume-viewer.min.js b/build/brainbrowser-2.2.0/brainbrowser.volume-viewer.min.js index 07be025b..d770b309 100644 --- a/build/brainbrowser-2.2.0/brainbrowser.volume-viewer.min.js +++ b/build/brainbrowser-2.2.0/brainbrowser.volume-viewer.min.js @@ -27,6 +27,7 @@ * Author: Nicolas Kassis * Author: Paul Mougel * -* three.js (c) 2010-2014 three.js authors, used under the MIT license*/ +* three.js (c) 2010-2014 three.js authors, used under the MIT license +*/ !function(){"use strict";var a="2.2.0";a=a.indexOf("BRAINBROWSER_VERSION")>0?"D.E.V":a,window.BrainBrowser={version:a},window.requestAnimationFrame=window.requestAnimationFrame||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame||window.oRequestAnimationFrame||window.msRequestAnimationFrame||function(a){return window.setTimeout(a,1e3/60)},window.cancelAnimationFrame=window.cancelAnimationFrame||function(a){window.clearTimeout(a)}}(),function(){"use strict";function a(b,c,d,e){return c>d?e(b):void Object.keys(b).forEach(function(f){a(b[f],c+1,d,e)})}BrainBrowser.createTreeStore=function(){var b={};return{set:function(){var a,c,d,e,f=arguments[arguments.length-1],g=Array.prototype.slice.call(arguments,0,arguments.length-1),h=b;for(c=0,d=g.length-1;d>c;c++){if(a=g[c],h[a]&&"object"!=typeof h[a])throw e="Hash key '["+g.slice(0,c+1).join("][")+"]' has already been set to a non-object value.\nCannot set '["+g.join("][")+"]'",BrainBrowser.events.triggerEvent("error",{message:e}),new Error(e);h[a]||(h[a]={}),h=h[a]}a=g[c],h[a]=f},get:function(){var a,c,d,e=Array.prototype.slice.call(arguments),f=b;if(0===e.length)return b;for(c=0,d=e.length-1;d>c;c++){if(a=e[c],void 0===f[a])return null;f=f[a]}return a=e[c],void 0!==f[a]?f[a]:null},remove:function(){var a,c,d,e,f=Array.prototype.slice.call(arguments),g=b;for(c=0,d=f.length-1;d>c;c++){if(a=f[c],void 0===g[a])return null;g=g[a]}return a=f[c],e=g[a],g[a]=void 0,e},reset:function(a){a=a&&"object"==typeof a?a:{},b=a},forEach:function(c,d){c=c>0?c:1,a(b,1,c,d)}}}}(),function(){"use strict";BrainBrowser.createColorMap=function(a,b){function c(a,b,c,d,e,f,g){var h;return(b>a||a>c)&&!e?-1:(h=Math.floor(Math.max(0,Math.min((a-b)*d,g-1))),f&&(h=g-1-h),h*=4)}function d(a,b,c){var d,e,f,g=document.createElement("canvas"),h=new Array(256);for(g.width=256,g.height=c,d=0;256>d;d++)h[d]=d;for(f=r.scale,r.scale=255,a=r.mapColors(h),r.scale=f,e=g.getContext("2d"),d=0;256>d;d++)e.fillStyle="rgb("+Math.floor(a[4*d])+", "+Math.floor(a[4*d+1])+", "+Math.floor(a[4*d+2])+")",e.fillRect(d,0,1,b);return g}b=b||{};var e,f,g,h,i,j,k,l,m=void 0===b.clamp?!0:b.clamp,n=b.flip||!1,o=b.scale||1,p=b.contrast||1,q=b.brightness||0;if(a)for(f=a.trim().split(/\n/),e=new Float32Array(4*f.length),k=0,i=0,g=f.length;g>i;i++)if(l=f[i].trim().split(/\s+/).slice(0,4),h=l.length,!(3>h)){for(j=0;h>j;j++)e[k+j]=parseFloat(l[j]);4>h&&(e[k+3]=1),k+=4}var r={colors:e,clamp:m,flip:n,scale:o,contrast:p,brightness:q,mapColors:function(a,b){b=b||{};var d,e,f,g,h,i,j=void 0===b.min?0:b.min,k=void 0===b.max?255:b.max,l=b.default_colors||[0,0,0,1],m=b.destination||new Float32Array(4*a.length),n=r.colors,o=r.colors.length/4,p=void 0===b.scale?r.scale:b.scale,q=void 0===b.clamp?r.clamp:b.clamp,s=void 0===b.flip?r.flip:b.flip,t=void 0===b.brightness?r.brightness:b.brightness,u=void 0===b.contrast?r.contrast:b.contrast,v=4===l.length?0:1,w=k-j,x=o/w;for(t*=p,u*=p,e=0,h=a.length;h>e;e++)d=a[e],f=4*e,i=c(d,j,k,x,q,s,o),0>i?(g=f*v,m[f]=u*l[g]+t,m[f+1]=u*l[g+1]+t,m[f+2]=u*l[g+2]+t,m[f+3]=p*l[g+3]):(m[f]=u*n[i]+t,m[f+1]=u*n[i+1]+t,m[f+2]=u*n[i+2]+t,m[f+3]=p*n[i+3]);return m},colorFromValue:function(a,b){b=b||{};var d,e=b.hex||!1,f=void 0===b.min?0:b.min,g=void 0===b.max?255:b.max,h=void 0===b.scale?r.scale:b.scale,i=void 0===b.brightness?r.brightness:b.brightness,j=void 0===b.contrast?r.contrast:b.contrast,k=g-f,l=r.colors.length/4,m=l/k,n=c(a,f,g,m,r.clamp,r.flip,l);return d=n>=0?Array.prototype.slice.call(r.colors,n,n+4):[0,0,0,1],d[0]=Math.max(0,Math.min(j*d[0]+i,1)),d[1]=Math.max(0,Math.min(j*d[1]+i,1)),d[2]=Math.max(0,Math.min(j*d[2]+i,1)),e?(d[0]=Math.floor(255*d[0]),d[1]=Math.floor(255*d[1]),d[2]=Math.floor(255*d[2]),d[3]=Math.floor(255*d[3]),d[0]=("0"+d[0].toString(16)).slice(-2),d[1]=("0"+d[1].toString(16)).slice(-2),d[2]=("0"+d[2].toString(16)).slice(-2),d=d.slice(0,3).join("")):(d[0]=d[0]*h,d[1]=d[1]*h,d[2]=d[2]*h,d[3]=d[3]*h),d},createElement:function(a,b){var c,e,f=r.colors,g=b-a;return c=d(f,20,40,n),e=c.getContext("2d"),e.fillStyle="#FFA000",e.fillRect(.5,20,1,10),e.fillText(a.toPrecision(3),.5,40),e.fillRect(c.width/4,20,1,10),e.fillText((a+.25*g).toPrecision(3),.25*c.width,40),e.fillRect(c.width/2,20,1,10),e.fillText((a+.5*g).toPrecision(3),.5*c.width,40),e.fillRect(3*c.width/4,20,1,10),e.fillText((a+.75*g).toPrecision(3),.75*c.width,40),e.fillRect(c.width-.5,20,1,10),e.fillText(b.toPrecision(3),c.width-20,40),c}};return r}}(),function(){"use strict";var a=BrainBrowser.createTreeStore();BrainBrowser.config={set:function(b,c){b=b||"";var d=b.split(".");d.push(c),a.set.apply(a,d)},get:function(b){b=b||"";var c=b.split(".");return a.get.apply(a,c)}}}(),function(){"use strict";function a(a,b){try{a.call(b.target,b)}catch(c){console.error("Error in event handler for: ",b.name),console.error(c.stack||c.message||c)}}var b=["eventmodelcleanup"];BrainBrowser.events={unpropagatedEvent:function(a){b.push(a)},addEventModel:function(c){var d=[],e={};c.addEventListener=function(a,b){d[a]||(d[a]=[]),d[a].push(b)},c.triggerEvent=function(e,f){var g=this,h=c.directPropagationTargets(e);f=f||{},f.name=e,f.target=g,d[e]&&d[e].forEach(function(b){a(b,f)}),d["*"]&&d["*"].forEach(function(b){a(b,f)}),-1===b.indexOf(e)&&(h.forEach(function(a){a.triggerEvent.call(g,e,f)}),0===h.length&&c!==BrainBrowser.events&&BrainBrowser.events.triggerEvent.call(g,e,f))},c.propagateEventTo=function(a,b){if(!BrainBrowser.utils.isFunction(b.allPropagationTargets))throw new Error("Propagation target doesn't seem to have an event model.");if(c===BrainBrowser.events||-1!==b.allPropagationTargets(a).indexOf(c))throw new Error("Propagating event '"+a+"' would cause a cycle.");e[a]=e[a]||[],-1===c.directPropagationTargets().indexOf(b)&&b.addEventListener("eventmodelcleanup",function(){this===b&&c.stopPropagatingTo(b)}),-1===e[a].indexOf(b)&&e[a].push(b)},c.propagateEventFrom=function(a,b){b.propagateEventTo(a,c)},c.stopPropagatingTo=function(a){Object.keys(e).forEach(function(b){e[b]=e[b].filter(function(b){return b!==a})})},c.directPropagationTargets=function(a){var b=[],c=void 0===a?Object.keys(e):[a,"*"];return c.forEach(function(a){var c=e[a]||[];c.forEach(function(a){-1===b.indexOf(a)&&b.push(a)})}),b},c.allPropagationTargets=function(a){var b=c.directPropagationTargets(a),d=Array.prototype.slice.call(b);return b.forEach(function(b){b.allPropagationTargets(a).forEach(function(a){-1===d.indexOf(a)&&d.push(a)})}),d}}},BrainBrowser.events.addEventModel(BrainBrowser.events)}(),function(){"use strict";var a=BrainBrowser.loader={loadFromURL:function(b,c,d){d=d||{};var e,f=new XMLHttpRequest,g=d.result_type,h=b.split("/"),i=h[h.length-1];f.open("GET",b),"arraybuffer"===g&&(f.responseType="arraybuffer"),f.onreadystatechange=function(){if(4===f.readyState){if(e=f.status,!(e>=200&&300>e||304===e)){var g="error loading URL: "+b+"\nHTTP Response: "+f.status+"\nHTTP Status: "+f.statusText+"\nResponse was: \n"+f.response;throw BrainBrowser.events.triggerEvent("error",{message:g}),new Error(g)}a.checkCancel(d)||c(f.response,i,d)}},f.send()},loadFromFile:function(a,b,c){var d=a.files;if(0!==d.length){c=c||{};var e=c.result_type,f=new FileReader,g=a.value.split("\\"),h=g[g.length-1];f.file=d[0],f.onloadend=function(a){b(a.target.result,h,c)},f.onerror=function(){var a="error reading file: "+h;throw BrainBrowser.events.triggerEvent("error",{message:a}),new Error(a)},"arraybuffer"===e?f.readAsArrayBuffer(d[0]):f.readAsText(d[0])}},loadColorMapFromURL:function(b,c,d){a.loadFromURL(b,function(a,b,d){c(BrainBrowser.createColorMap(a,d),b,d)},d)},loadColorMapFromFile:function(b,c,d){a.loadFromFile(b,function(a,b,d){c(BrainBrowser.createColorMap(a,d),b,d)},d)},checkCancel:function(a){a=a||{},BrainBrowser.utils.isFunction(a)&&(a={test:a});var b=a.test,c=a.cleanup,d=!1;return b&&b()&&(d=!0,c&&c()),d}}}(),function(){"use strict";BrainBrowser.utils={canvasEnabled:function(){return!!document.createElement("canvas")},webglEnabled:function(){var a=document.createElement("canvas");try{return!(!a||!window.WebGLRenderingContext||!a.getContext("webgl")&&!a.getContext("experimental-webgl"))}catch(b){return!1}},webWorkersEnabled:function(){return!!window.Worker},webGLErrorMessage:function(){var a,b='BrainBrowser requires WebGL.
';return b+=window.WebGLRenderingContext?"Your browser seems to support it, but it is
disabled or unavailable.
":"Your browser does not seem to support it.
",b+='Test your browser\'s WebGL support here.',a=document.createElement("div"),a.id="webgl-error",a.innerHTML=b,a},isFunction:function(a){return a instanceof Function||"function"==typeof a},isNumeric:function(a){return!isNaN(parseFloat(a))},createDataURL:function(a,b){if(!window.URL||!window.URL.createObjectURL)throw new Error("createDataURL requires URL.createObjectURL which does not seem to be available is this browser.");return window.URL.createObjectURL(new Blob([a],{type:b||"text/plain"}))},min:function(){var a=Array.prototype.slice.call(arguments);a=1===a.length&&BrainBrowser.utils.isNumeric(a[0].length)?a[0]:a;var b,c,d=a[0];for(b=1,c=a.length;c>b;b++)a[b]b;b++)a[b]>d&&(d=a[b]);return d},getOffset:function(a){for(var b=0,c=0;a.offsetParent;)b+=a.offsetTop,c+=a.offsetLeft,a=a.offsetParent;return{top:b,left:c}},captureMouse:function(a){var b={x:0,y:0,left:!1,middle:!1,right:!1};return document.addEventListener("mousemove",function(c){var d,e,f=BrainBrowser.utils.getOffset(a);void 0!==c.pageX?(d=c.pageX,e=c.pageY):(d=c.clientX+window.pageXOffset,e=c.clientY+window.pageYOffset),b.x=d-f.left,b.y=e-f.top},!1),a.addEventListener("mousedown",function(a){a.preventDefault(),0===a.button&&(b.left=!0),1===a.button&&(b.middle=!0),2===a.button&&(b.right=!0)},!1),a.addEventListener("mouseup",function(a){a.preventDefault(),0===a.button&&(b.left=!1),1===a.button&&(b.middle=!1),2===a.button&&(b.right=!1)},!1),a.addEventListener("mouseleave",function(a){a.preventDefault(),b.left=b.middle=b.right=!1},!1),a.addEventListener("contextmenu",function(a){a.preventDefault()},!1),b},captureTouch:function(a){function b(b){var d,e,f,g,h,i=BrainBrowser.utils.getOffset(a);for(c.length=g=b.touches.length,f=0;g>f;f++)h=b.touches[f],void 0!==h.pageX?(d=h.pageX,e=h.pageY):(d=h.clientX+window.pageXOffset,e=h.clientY+window.pageYOffset),c[f]=c[f]||{},c[f].x=d-i.left,c[f].y=e-i.top}var c=[];return a.addEventListener("touchstart",b,!1),a.addEventListener("touchmove",b,!1),a.addEventListener("touchend",b,!1),c}}}(),function(){"use strict";var a=BrainBrowser.VolumeViewer={};a.modules={},a.volume_loaders={},a.start=function(b,c){function d(){document.addEventListener("keydown",function(a){if(f.active_panel){var b,c,d,e=f.active_panel,g=e.volume,h=e.axis,i=a.which,j={17:function(){e.anchor||(e.mouse.left||e.mouse.middle||e.mouse.right)&&(e.anchor={x:e.mouse.x,y:e.mouse.y})},37:function(){b=e.slice.width_space.name,g.position[b]>0&&g.position[b]--},38:function(){b=e.slice.height_space.name,g.position[b]0&&g.position[b]--}};return"function"==typeof j[i]?(a.preventDefault(),j[i](),e.updated=!0,g.display.forEach(function(a){e!==a&&a.updateSlice()}),f.synced&&(d=e.getCursorPosition(),f.volumes.forEach(function(a){var b;a!==g&&(b=a.display.getPanel(h),b.updateVolumePosition(d.x,d.y),a.display.forEach(function(a){a!==b&&a.updateSlice()}))})),!1):32===i&&(a.preventDefault(),g.data.time)?(c=a.shiftKey?Math.max(0,g.current_time-1):Math.min(g.current_time+1,g.data.time.space_length-1),g.current_time=c,f.synced&&f.volumes.forEach(function(a){a!==g&&(a.current_time=Math.max(0,Math.min(c,a.data.time.space_length-1)))}),f.redrawVolumes(),!1):void 0}},!1),document.addEventListener("keyup",function(a){var b=a.which,c={17:function(){f.volumes.forEach(function(a){a.display.forEach(function(a){a.anchor=null})})}};return"function"==typeof c[b]?(a.preventDefault(),c[b](),!1):void 0},!1)}var e;e="string"==typeof b?document.getElementById(b):b;var f={dom_element:e,volumes:[],synced:!1};return Object.keys(a.modules).forEach(function(b){a.modules[b](f)}),BrainBrowser.events.addEventModel(f),console.log("BrainBrowser Volume Viewer v"+BrainBrowser.version),d(),c(f),f}}(),function(){"use strict";BrainBrowser.VolumeViewer.createDisplay=function(){var a={},b={setPanel:function(c,d){a[c]&&a[c].triggerEvent("eventmodelcleanup"),d.propagateEventTo("*",b),a[c]=d},getPanel:function(b){return a[b]},refreshPanels:function(){b.forEach(function(a){a.updateSlice()})},setContrast:function(a){b.forEach(function(b){b.contrast=a})},setBrightness:function(a){b.forEach(function(b){b.brightness=a})},forEach:function(b){Object.keys(a).forEach(function(c,d){b(a[c],c,d)})}};return BrainBrowser.events.addEventModel(b),b.addEventListener("eventmodelcleanup",function(){b.forEach(function(a){a.triggerEvent("eventmodelcleanup")})}),b}}(),function(){"use strict";function a(a,b){a.slice=b,a.slice_image=a.slice.getImage(a.zoom,a.contrast,a.brightness)}function b(a,b){var c,d,e,f,g,h,i=a.context,j=a.getCursorPosition(),k=a.zoom,l=8*k;b=b||"#FF0000",i.save(),i.strokeStyle=b,i.fillStyle=b,e=k,c=j.x,d=j.y,i.lineWidth=2*e,i.beginPath(),i.moveTo(c,d-l),i.lineTo(c,d-e),i.moveTo(c,d+e),i.lineTo(c,d+l),i.moveTo(c-l,d),i.lineTo(c-e,d),i.moveTo(c+e,d),i.lineTo(c+l,d),i.stroke(),a.anchor&&(g=(a.anchor.x-j.x)/a.zoom,h=(a.anchor.y-j.y)/a.zoom,f=Math.sqrt(g*g+h*h),i.font="bold 12px arial",a.canvas.width-j.x<50?(i.textAlign="right",c=j.x-l):(i.textAlign="left",c=j.x+l),j.y<30?(i.textBaseline="top",d=j.y+l):(i.textBaseline="bottom",d=j.y-l),i.fillText(f.toFixed(2),c,d),i.lineWidth=1,i.beginPath(),i.arc(a.anchor.x,a.anchor.y,2*e,0,2*Math.PI),i.fill(),i.moveTo(a.anchor.x,a.anchor.y),i.lineTo(j.x,j.y),i.stroke()),i.restore()}function c(a){var b,c=a.slice_image;c&&(b={x:a.image_center.x-a.slice_image.width/2,y:a.image_center.y-a.slice_image.height/2},a.context.putImageData(c,b.x,b.y))}function d(a){var b=a.slice;return{x:a.image_center.x-Math.abs(b.width_space.step*b.width_space.space_length*a.zoom)/2,y:a.image_center.y-Math.abs(b.height_space.step*b.height_space.space_length*a.zoom)/2}}BrainBrowser.VolumeViewer.createPanel=function(e){e=e||{};var f=0,g={x:0,y:0},h={x:0,y:0},i=null,j={image_center:{x:0,y:0},zoom:1,contrast:1,brightness:0,updated:!0,setSize:function(a,b,c){c=c||{},a=a>0?a:0,b=b>0?b:0;var d,e,f,g=c.scale_image;g&&(d=j.canvas.width,e=j.canvas.width,f=Math.min(a/d,b/e)),j.canvas.width=a,j.canvas.height=b,g&&(j.zoom=j.zoom*f,j.image_center.x=a/2,j.image_center.y=b/2,j.updateVolumePosition(),j.updateSlice()),j.updated=!0},followPointer:function(a){var b=a.x-h.x,c=a.y-h.y,d=j.getCursorPosition();j.image_center.x+=b,j.image_center.y+=c,d.x+=b,d.y+=c,h.x=a.x,h.y=a.y,j.updated=!0},reset:function(){j.zoom=1,j.image_center.x=j.canvas.width/2,j.image_center.y=j.canvas.height/2},getCursorPosition:function(){var a=j.volume,b=j.slice,c=d(j);return{x:a.position[b.width_space.name]*Math.abs(b.width_space.step)*j.zoom+c.x,y:(b.height_space.space_length-a.position[b.height_space.name]-1)*Math.abs(b.height_space.step)*j.zoom+c.y}},updateVolumePosition:function(a,b){var c,e,f,g=d(j),h=j.zoom,i=j.volume,k=j.slice;(void 0===a||void 0===b)&&(c=j.getCursorPosition(),a=c.x,b=c.y),e=Math.round((a-g.x)/h/Math.abs(k.width_space.step)),f=Math.round(k.height_space.space_length-(b-g.y)/h/Math.abs(k.height_space.step)-1),i.position[j.slice.width_space.name]=e,i.position[j.slice.height_space.name]=f,j.updated=!0},updateSlice:function(b){clearTimeout(i),i=setTimeout(function(){var c,d=j.volume;c=d.slice(j.axis),c.min=d.min,c.max=d.max,a(j,c),j.triggerEvent("sliceupdate",{volume:d,slice:c}),j.updated=!0,BrainBrowser.utils.isFunction(b)&&b(c)},0)},draw:function(a,d){var e=j.getCursorPosition();if((g.x!==e.x||g.y!==e.y)&&(g.x=e.x,g.y=e.y,j.updated=!0,j.triggerEvent("cursorupdate",{volume:j.volume,cursor:e})),f!==j.zoom&&(f=j.zoom,j.updated=!0,j.triggerEvent("zoom",{volume:j.volume,zoom:j.zoom})),j.touches[0]?(h.x=j.touches[0].x,h.y=j.touches[0].y):(h.x=j.mouse.x,h.y=j.mouse.y),j.updated){var i=j.canvas,k=j.context,l=4,m=l/2;k.globalAlpha=255,k.clearRect(0,0,i.width,i.height),c(j),j.triggerEvent("draw",{volume:j.volume,cursor:e,canvas:i,context:k}),b(j,a),d&&(k.save(),k.strokeStyle="#EC2121",k.lineWidth=l,k.strokeRect(m,m,i.width-l,i.height-l),k.restore()),j.updated=!1}}};return Object.keys(e).forEach(function(a){BrainBrowser.utils.isFunction(j[a])||(j[a]=e[a])}),BrainBrowser.events.addEventModel(j),j.canvas&&BrainBrowser.utils.isFunction(j.canvas.getContext)&&(j.context=j.canvas.getContext("2d"),j.mouse=BrainBrowser.utils.captureMouse(j.canvas),j.touches=BrainBrowser.utils.captureTouch(j.canvas)),j.volume&&a(j,j.volume.slice(j.axis)),j}}(),function(){"use strict";BrainBrowser.VolumeViewer.utils={nearestNeighbor:function(a,b,c,d,e,f){f=f||{};var g,h,i,j,k,l,m,n,o,p,q=f.block_size||1,r=f.array_type||Uint8ClampedArray;if(b===d&&c===e)return a;for(k=new r(d*e*q),g=b/d,h=c/e,m=0;e>m;m++)for(i=Math.floor(m*h)*b,n=m*d,l=0;d>l;l++)for(j=(i+Math.floor(l*g))*q,o=(n+l)*q,p=0;q>p;p++)k[o+p]=a[j+p];return k},flipArray:function(a,b,c,d){d=d||{};var e,f,g,h,i,j,k,l,m,n=d.flipx||!1,o=d.flipy||!1,p=d.block_size||1,q=new a.constructor(a.length);if(!n&&!o){for(e=0,f=a.length;f>e;e++)q[e]=a[e];return q}for(f=0;c>f;f++)for(j=f*b,i=o?c-f-1:f,l=i*b,e=0;b>e;e++)for(k=(j+e)*p,h=n?b-e-1:e,m=(l+h)*p,g=0;p>g;g++)q[k+g]=a[m+g];return q}}}(),BrainBrowser.VolumeViewer.modules.loading=function(a){"use strict";function b(a,b){var c,d=h.volume_loaders[a.type];if(!d)throw c="Unsuported Volume Type",BrainBrowser.events.triggerEvent("error",{message:c}),new Error(c);d(a,b)}function c(c,d,e){b(d,function(b){var f=0,h=d.views||["xspace","yspace","zspace"];BrainBrowser.events.addEventModel(b),b.addEventListener("eventmodelcleanup",function(){b.display.triggerEvent("eventmodelcleanup")}),a.volumes[c]=b,b.color_map=i,b.display=g(a.dom_element,c,d),b.propagateEventTo("*",a),["xspace","yspace","zspace"].forEach(function(a){b.position[a]=Math.floor(b.header[a].space_length/2)}),b.display.forEach(function(c){c.updateSlice(function(){++f===h.length&&(a.triggerEvent("volumeloaded",{volume:b}),BrainBrowser.utils.isFunction(e)&&e(b))})})})}function d(b,c,d){b.cursor_color=c,i=b,a.volumes.forEach(function(a){a.color_map=a.color_map||i}),BrainBrowser.utils.isFunction(d)&&d(b)}function e(b,c,d,e){c.cursor_color=d,a.setVolumeColorMap(b,c),BrainBrowser.utils.isFunction(e)&&e(a.volumes[b],c)}function f(a,b,c,d){var e=document.getElementById(c).innerHTML.replace(/\{\{VOLID\}\}/gm,b),f=document.createElement("div");f.innerHTML=e;var g,h,i,j=f.childNodes,k=f.getElementsByClassName(d)[0];for(g=0,h=a.childNodes.length;h>g;g++)i=a.childNodes[g],1===i.nodeType&&(k.appendChild(i),g--,h--);return j}function g(b,c,d){var e,g=document.createElement("div"),i=a.volumes[c],l=h.createDisplay(),m=d.template||{},n=d.views||["xspace","yspace","zspace"];return l.propagateEventTo("*",i),g.classList.add("volume-container"),n.forEach(function(a){var b=document.createElement("canvas");b.width=j,b.height=k,b.classList.add("slice-display"),b.style.backgroundColor="#000000",g.appendChild(b),l.setPanel(a,h.createPanel({volume:i,volume_id:c,axis:a,canvas:b,image_center:{x:b.width/2,y:b.height/2}}))}),m.element_id&&m.viewer_insert_class&&(e=f(g,c,m.element_id,m.viewer_insert_class),"function"==typeof m.complete&&m.complete(i,e),Array.prototype.forEach.call(e,function(a){1===a.nodeType&&g.appendChild(a)})),function(){var b=null;n.forEach(function(d){function e(b,e,f){f&&(a.volumes.forEach(function(a){a.display.forEach(function(a){a.anchor=null})}),r.anchor={x:b.x,y:b.y}),e||(r.updateVolumePosition(b.x,b.y),i.display.forEach(function(a){r!==a&&a.updateSlice()}),a.synced&&a.volumes.forEach(function(a,e){var f;e!==c&&(f=a.display.getPanel(d),f.updateVolumePosition(b.x,b.y),a.display.forEach(function(a){a!==f&&a.updateSlice()}))})),r.updated=!0}function f(b,e){e?(r.followPointer(b),a.synced&&a.volumes.forEach(function(a,e){var f;e!==c&&(f=a.display.getPanel(d),f.followPointer(b))})):(r.updateVolumePosition(b.x,b.y),i.display.forEach(function(a){r!==a&&a.updateSlice()}),a.synced&&a.volumes.forEach(function(a,e){var f;e!==c&&(f=a.display.getPanel(d),f.updateVolumePosition(b.x,b.y),a.display.forEach(function(a){a!==f&&a.updateSlice()}))})),r.updated=!0}function g(a){a.target===b&&(a.preventDefault(),f(r.mouse,a.shiftKey))}function h(a){a.target===b&&(a.preventDefault(),f(r.touches[0],r.touches.length===n.length))}function j(){document.removeEventListener("mousemove",g,!1),document.removeEventListener("mouseup",j,!1),a.volumes.forEach(function(a){a.display.forEach(function(a){a.anchor=null})}),b=null}function k(){document.removeEventListener("touchmove",h,!1),document.removeEventListener("touchend",k,!1),a.volumes.forEach(function(a){a.display.forEach(function(a){a.anchor=null})}),b=null}function m(){var a,b=r.touches[0].x-r.touches[1].x,c=r.touches[0].y-r.touches[1].y,d=Math.sqrt(b*b+c*c);null!==t&&(a=d-t,q(.2*a)),t=d}function o(){document.removeEventListener("touchmove",m,!1),document.removeEventListener("touchend",o,!1),t=null}function p(a){q(Math.max(-1,Math.min(1,a.wheelDelta||-a.detail)))}function q(b){event.preventDefault(),r.zoom=Math.max(r.zoom+.05*b,.05),r.updateVolumePosition(),r.updateSlice(),a.synced&&a.volumes.forEach(function(a,b){var e=a.display.getPanel(d);b!==c&&(e.zoom=r.zoom,e.updateVolumePosition(),e.updateSlice())})}var r=l.getPanel(d),s=r.canvas,t=null;s.addEventListener("mousedown",function(c){c.preventDefault(),b=c.target,a.active_panel&&(a.active_panel.updated=!0),a.active_panel=r,document.addEventListener("mousemove",g,!1),document.addEventListener("mouseup",j,!1),e(r.mouse,c.shiftKey,c.ctrlKey)},!1),s.addEventListener("touchstart",function(c){c.preventDefault(),b=c.target,a.active_panel&&(a.active_panel.updated=!0),a.active_panel=r,2===r.touches.length?(document.removeEventListener("touchmove",h,!1),document.removeEventListener("touchend",k,!1),document.addEventListener("touchmove",m,!1),document.addEventListener("touchend",o,!1)):(document.removeEventListener("touchmove",m,!1),document.removeEventListener("touchend",o,!1),document.addEventListener("touchmove",h,!1),document.addEventListener("touchend",k,!1),e(r.touches[0],3===r.touches.length,!0))},!1),s.addEventListener("mousewheel",p,!1),s.addEventListener("DOMMouseScroll",p,!1)})}(),b.appendChild(g),a.triggerEvent("volumeuiloaded",{container:g,volume:i,volume_id:c}),l}var h=BrainBrowser.VolumeViewer,i=null,j=256,k=256;a.loadVolumes=function(b){function d(d){c(d,g[d],function(){++j1?a.createOverlay(f,function(){BrainBrowser.utils.isFunction(i)&&i(),a.triggerEvent("volumesloaded")}):(BrainBrowser.utils.isFunction(i)&&i(),a.triggerEvent("volumesloaded")))})}b=b||{};var e,f=b.overlay&&"object"==typeof b.overlay?b.overlay:{},g=b.volumes,h=b.volumes.length,i=b.complete,j=0;for(e=0;h>e;e++)d(e)},a.loadVolumeColorMapFromURL=function(a,b,c,d){BrainBrowser.loader.loadColorMapFromURL(b,function(b){e(a,b,c,d)},{scale:255})},a.loadDefaultColorMapFromURL=function(a,b,c){BrainBrowser.loader.loadColorMapFromURL(a,function(a){d(a,b,c)},{scale:255})},a.loadVolumeColorMapFromFile=function(a,b,c,d){BrainBrowser.loader.loadColorMapFromFile(b,function(b){e(a,b,c,d)},{scale:255})},a.loadDefaultColorMapFromFile=function(a,b,c){BrainBrowser.loader.loadColorMapFromFile(a,function(a){d(a,b,c)},{scale:255})},a.setVolumeColorMap=function(b,c){a.volumes[b].color_map=c},a.loadVolume=function(b,d){c(a.volumes.length,b,d)},a.clearVolumes=function(){a.volumes.forEach(function(a){a.triggerEvent("eventmodelcleanup")}),a.volumes=[],a.active_panel=null,a.dom_element.innerHTML=""},a.createOverlay=function(b,c){b=b||{},a.loadVolume({volumes:a.volumes,type:"overlay",template:b.template},c)},a.setDefaultPanelSize=function(a,b){j=a,k=b}},BrainBrowser.VolumeViewer.modules.rendering=function(a){"use strict";a.draw=function(){a.volumes.forEach(function(b){b.display.forEach(function(c){c.draw(b.color_map.cursor_color,a.active_panel===c)})})},a.render=function(){a.triggerEvent("rendering"),function b(){window.requestAnimationFrame(b),a.draw()}()},a.redrawVolume=function(b){var c=a.volumes[b];c.display.forEach(function(a){a.updateSlice()})},a.redrawVolumes=function(){a.volumes.forEach(function(b,c){a.redrawVolume(c)})},a.resetDisplays=function(){a.volumes.forEach(function(a){a.display.forEach(function(a){a.reset()})})},a.setPanelSize=function(b,c,d){a.volumes.forEach(function(a){a.display.forEach(function(a){a.setSize(b,c,d)})})}},function(){"use strict";function a(a,b){var c,d;try{c=JSON.parse(a)}catch(e){throw d="server did not respond with valid JSON\nResponse was: \n"+a,BrainBrowser.events.triggerEvent("error",{message:d}),new Error(d)}BrainBrowser.utils.isFunction(b)&&b(c)}function b(a,b,f){var g=c(a,new Uint8Array(b)),h={position:{},current_time:0,data:g,header:g.header,min:0,max:255,slice:function(a,b,c){b=void 0===b?h.position[a]:b,c=void 0===c?h.current_time:c;var f=h.data.slice(a,b,c);return f.color_map=h.color_map,f.min=h.min,f.max=h.max,f.axis=a,f.getImage=function(a,b,c){a=a||1;var g,i=f.color_map;if(!i)throw g="No color map set for this volume. Cannot render slice.",h.triggerEvent("error",g),new Error(g);var j=f.width_space.step,k=f.height_space.step,l=Math.abs(Math.floor(f.width*j*a)),m=Math.abs(Math.floor(f.height*k*a)),n=e.createImageData(f.width,f.height),o=e.createImageData(l,m);return i.mapColors(f.data,{min:f.min,max:f.max,contrast:b,brightness:c,destination:n.data}),o.data.set(d.utils.nearestNeighbor(n.data,n.width,n.height,l,m,{block_size:4})),o},f},getIntensityValue:function(a,b,c,d){if(a=void 0===a?h.position.xspace:a,b=void 0===b?h.position.yspace:b,c=void 0===c?h.position.zspace:c,d=void 0===d?h.current_time:d,0>a||a>h.data.xspace.space_length||0>b||b>h.data.yspace.space_length||0>c||c>h.data.zspace.space_length)return 0;var e=h.data.slice("zspace",c,d);return e.data[(e.height_space.space_length-b-1)*e.width+a]},getVoxelCoords:function(){var a=h.data,b={xspace:a.xspace.step>0?h.position.xspace:a.xspace.space_length-h.position.xspace,yspace:a.yspace.step>0?h.position.yspace:a.yspace.space_length-h.position.yspace,zspace:a.zspace.step>0?h.position.zspace:a.zspace.space_length-h.position.zspace};return{i:b[a.order[0]],j:b[a.order[1]],k:b[a.order[2]]}},setVoxelCoords:function(a,b,c){var d=h.data,e=d.order[0],f=d.order[1],g=d.order[2];h.position[e]=d[e].step>0?a:d[e].space_length-a,h.position[f]=d[f].step>0?b:d[f].space_length-b,h.position[g]=d[g].step>0?c:d[g].space_length-c},getWorldCoords:function(){var a=h.getVoxelCoords();return h.voxelToWorld(a.i,a.j,a.k)},setWorldCoords:function(a,b,c){var d=h.worldToVoxel(a,b,c);h.setVoxelCoords(d.i,d.j,d.k)},voxelToWorld:function(a,b,c){var d,e,f,g={};g[h.data.order[0]]=a,g[h.data.order[1]]=b,g[h.data.order[2]]=c,d=g.xspace,e=g.yspace,f=g.zspace;var i=h.data.xspace.direction_cosines,j=h.data.yspace.direction_cosines,k=h.data.zspace.direction_cosines,l=h.data.xspace.step,m=h.data.yspace.step,n=h.data.zspace.step,o=h.data.voxel_origin;return{x:d*i[0]*l+e*j[0]*m+f*k[0]*n+o.x,y:d*i[1]*l+e*j[1]*m+f*k[1]*n+o.y,z:d*i[2]*l+e*j[2]*m+f*k[2]*n+o.z}},worldToVoxel:function(a,b,c){var d=h.data.xspace.direction_cosines,e=h.data.yspace.direction_cosines,f=h.data.zspace.direction_cosines,g=h.data.xspace.step,i=h.data.yspace.step,j=h.data.zspace.step,k=h.data.voxel_origin,l=(-k.x*d[0]-k.y*d[1]-k.z*d[2])/g,m=(-k.x*e[0]-k.y*e[1]-k.z*e[2])/i,n=(-k.x*f[0]-k.y*f[1]-k.z*f[2])/j,o={x:Math.round(a*d[0]/g+b*d[1]/g+c*d[2]/g+l),y:Math.round(a*e[0]/i+b*e[1]/i+c*e[2]/i+m),z:Math.round(a*f[0]/j+b*f[1]/j+c*f[2]/j+n)},p={};return p[h.data.order[0]]=o.x,p[h.data.order[1]]=o.y,p[h.data.order[2]]=o.z,{i:p.xspace,j:p.yspace,k:p.zspace}}};BrainBrowser.utils.isFunction(f)&&f(h)}function c(a,b){var c,d,e,f,g,h,i={data:b,cached_slices:{}};return i.header=a,i.order=a.order,4===a.order.length&&(i.order=i.order.slice(1),i.time=a.time),i.xspace=a.xspace,i.yspace=a.yspace,i.zspace=a.zspace,i.xspace.name="xspace",i.yspace.name="yspace",i.zspace.name="zspace",i.xspace.space_length=parseFloat(i.xspace.space_length),i.yspace.space_length=parseFloat(i.yspace.space_length),i.zspace.space_length=parseFloat(i.zspace.space_length),c=i.xspace.start=parseFloat(i.xspace.start),d=i.yspace.start=parseFloat(i.yspace.start),e=i.zspace.start=parseFloat(i.zspace.start),i.xspace.step=parseFloat(i.xspace.step),i.yspace.step=parseFloat(i.yspace.step),i.zspace.step=parseFloat(i.zspace.step),i.xspace.direction_cosines=i.xspace.direction_cosines||[1,0,0],i.yspace.direction_cosines=i.yspace.direction_cosines||[0,1,0],i.zspace.direction_cosines=i.zspace.direction_cosines||[0,0,1],f=i.xspace.direction_cosines=i.xspace.direction_cosines.map(parseFloat),g=i.yspace.direction_cosines=i.yspace.direction_cosines.map(parseFloat),h=i.zspace.direction_cosines=i.zspace.direction_cosines.map(parseFloat),i.voxel_origin={x:c*f[0]+d*g[0]+e*h[0],y:c*f[1]+d*g[1]+e*h[1],z:c*f[2]+d*g[2]+e*h[2]},i.xspace.width_space=i.yspace,i.xspace.width=i.yspace.space_length,i.xspace.height_space=i.zspace,i.xspace.height=i.zspace.space_length,i.yspace.width_space=i.xspace,i.yspace.width=i.xspace.space_length,i.yspace.height_space=i.zspace,i.yspace.height=i.zspace.space_length,i.zspace.width_space=i.xspace,i.zspace.width=i.xspace.space_length,i.zspace.height_space=i.yspace,i.zspace.height=i.yspace.space_length,i[i.order[0]].offset=i[i.order[1]].space_length*i[i.order[2]].space_length,i[i.order[1]].offset=i[i.order[2]].space_length,i[i.order[2]].offset=1,i.time&&(i.time.space_length=parseFloat(i.time.space_length),i.time.start=parseFloat(i.time.start),i.time.step=parseFloat(i.time.step),i.time.offset=i.xspace.space_length*i.yspace.space_length*i.zspace.space_length),i.slice=function(a,b,c){if(void 0===i.order)return null;c=c||0;var d=i.cached_slices;if(d[a]=d[a]||[],d[a][c]=d[a][c]||[],void 0!==d[a][c][b])return d[a][c][b];var e,f,g,h,j,k,l,m,n,o=i.time?c*i.time.offset:0,p=i[a],q=p.width_space,r=p.height_space,s=p.width,t=p.height,u=p.offset,v=q.offset,w=r.offset,x=new Uint8Array(s*t),y=q.step>0,z=r.step>0,A=p.step>0,B=0;for(k=A?b:p.space_length-b-1,l=o+k*u,f=t-1;f>=0;f--)for(j=z?f:t-f-1,m=l+j*w,g=0;s>g;g++)h=y?g:s-g-1,n=m+h*v,x[B++]=i.data[n];return e={data:x,width_space:q,height_space:r,width:s,height:t},d[a][c][b]=e,e},i}var d=BrainBrowser.VolumeViewer,e=document.createElement("canvas").getContext("2d");d.volume_loaders.minc=function(c,d){var e;if(c.header_url&&c.raw_data_url)BrainBrowser.loader.loadFromURL(c.header_url,function(e){a(e,function(a){BrainBrowser.loader.loadFromURL(c.raw_data_url,function(c){b(a,c,d)},{result_type:"arraybuffer"})})});else{if(!c.header_file||!c.raw_data_file)throw e="invalid volume description.\nDescription must contain property pair 'header_url' and 'raw_data_url', or\n'header_file' and 'raw_data_file'.",BrainBrowser.events.triggerEvent("error",{message:e}),new Error(e);BrainBrowser.loader.loadFromFile(c.header_file,function(e){a(e,function(a){BrainBrowser.loader.loadFromFile(c.raw_data_file,function(c){b(a,c,d)},{result_type:"arraybuffer"})})})}}}(),function(){"use strict";function a(a,b,c){var d=a.length;if(1===d)return a[0];var e,f,g,h,i,j,k,l,m,n=c.data,o=c.width,p=c.height,q=new Uint32Array(a.length),r=new Float32Array(b);for(e=0;p>e;e+=1)for(m=e*o,f=0;o>f;f+=1)for(j=4*(m+f),k=0,g=0;d>g;g+=1)h=a[g],em&&n>0&&q.data.set(b.utils.flipImage(q.data,q.width,q.height,{flipx:!0,flipy:!1,block_size:4})),r.data.set(b.utils.nearestNeighbor(q.data,q.width,q.height,o,p,{block_size:4})),j=Math.max(j,o),k=Math.max(k,p),i.push(r)}),a(i,g.blend_ratios,c.createImageData(j,k))}}},getIntensityValue:function(a,b,c,d){a=void 0===a?this.position.xspace:a,b=void 0===b?this.position.yspace:b,c=void 0===c?this.position.zspace:c,d=void 0===d?this.current_time:d;var e=this,f=[];return e.volumes.forEach(function(e){(0>a||a>e.data.xspace.space_length||0>b||b>e.data.yspace.space_length||0>c||c>e.data.zspace.space_length)&&f.push(0);var g,h,i=e.data.slice("zspace",c,d),j=i.data;"xspace"===i.width_space.name?(g=a,h=b):(g=b,h=c),f.push(j[(i.height_space.space_length-h-1)*i.width+g])}),f.reduce(function(a,b,c){return a+b*e.blend_ratios[c]},0)}};f.forEach(function(a){g.volumes.push(a),g.blend_ratios.push(1/f.length)}),BrainBrowser.utils.isFunction(e)&&e(g)}}(); \ No newline at end of file diff --git a/build/brainbrowser-2.2.0/workers/deindex.worker.js b/build/brainbrowser-2.2.0/workers/deindex.worker.js index 3bd8fd13..2b024312 100644 --- a/build/brainbrowser-2.2.0/workers/deindex.worker.js +++ b/build/brainbrowser-2.2.0/workers/deindex.worker.js @@ -27,5 +27,6 @@ * Author: Nicolas Kassis * Author: Paul Mougel * -* three.js (c) 2010-2014 three.js authors, used under the MIT license*/ +* three.js (c) 2010-2014 three.js authors, used under the MIT license +*/ !function(){"use strict";function a(a,c,d,e){a=a||[],c=c||[],d=d||[],e=e;var f,g,h,i,j,k,l,m,n,o,p=a.length,q=3*p,r=4*p,s=d.length>0,t={},u={};4===e.length&&(j=!0,f=e[0],g=e[1],h=e[2],i=e[3]);var v=new Float32Array(q),w=s?new Float32Array(q):new Float32Array,x=new Float32Array(r);for(k=0,l=a.length;l>k;k++)b(t,c[3*a[k]],c[3*a[k]+1],c[3*a[k]+2]);for(u.x=t.minX+(t.maxX-t.minX)/2,u.y=t.minY+(t.maxY-t.minY)/2,u.z=t.minZ+(t.maxZ-t.minZ)/2,u.bounding_box=t,k=0;p>k;k+=3)m=3*k,n=4*k,v[m]=c[3*a[k]]-u.x,v[m+1]=c[3*a[k]+1]-u.y,v[m+2]=c[3*a[k]+2]-u.z,v[m+3]=c[3*a[k+1]]-u.x,v[m+4]=c[3*a[k+1]+1]-u.y,v[m+5]=c[3*a[k+1]+2]-u.z,v[m+6]=c[3*a[k+2]]-u.x,v[m+7]=c[3*a[k+2]+1]-u.y,v[m+8]=c[3*a[k+2]+2]-u.z,s&&(w[m]=d[3*a[k]],w[m+1]=d[3*a[k]+1],w[m+2]=d[3*a[k]+2],w[m+3]=d[3*a[k+1]],w[m+4]=d[3*a[k+1]+1],w[m+5]=d[3*a[k+1]+2],w[m+6]=d[3*a[k+2]],w[m+7]=d[3*a[k+2]+1],w[m+8]=d[3*a[k+2]+2]),j?(x[n]=f,x[n+1]=g,x[n+2]=h,x[n+3]=i,x[n+4]=f,x[n+5]=g,x[n+6]=h,x[n+7]=i,x[n+8]=f,x[n+9]=g,x[n+10]=h,x[n+11]=i):(x[n]=e[4*a[k]],x[n+1]=e[4*a[k]+1],x[n+2]=e[4*a[k]+2],x[n+3]=e[4*a[k]+3],x[n+4]=e[4*a[k+1]],x[n+5]=e[4*a[k+1]+1],x[n+6]=e[4*a[k+1]+2],x[n+7]=e[4*a[k+1]+3],x[n+8]=e[4*a[k+2]],x[n+9]=e[4*a[k+2]+1],x[n+10]=e[4*a[k+2]+2],x[n+11]=e[4*a[k+2]+3]);return o={centroid:u,unindexed:{position:v,normal:w,color:x}}}function b(a,b,c,d){(!a.minX||a.minX>b)&&(a.minX=b),(!a.maxX||a.maxXc)&&(a.minY=c),(!a.maxY||a.maxYd)&&(a.minZ=d),(!a.maxZ||a.maxZc;c++)e=h[c],f=a(h[c].indices,i,j,e.color||k),e.centroid=f.centroid,e.unindexed=f.unindexed;self.postMessage(g)})}(); \ No newline at end of file diff --git a/build/brainbrowser-2.2.0/workers/freesurferasc.intensity.worker.js b/build/brainbrowser-2.2.0/workers/freesurferasc.intensity.worker.js index d2389f62..e26e8290 100644 --- a/build/brainbrowser-2.2.0/workers/freesurferasc.intensity.worker.js +++ b/build/brainbrowser-2.2.0/workers/freesurferasc.intensity.worker.js @@ -27,5 +27,6 @@ * Author: Nicolas Kassis * Author: Paul Mougel * -* three.js (c) 2010-2014 three.js authors, used under the MIT license*/ +* three.js (c) 2010-2014 three.js authors, used under the MIT license +*/ !function(){"use strict";function a(a){var b,c,d,e,f,g,h;for(a=a.trim(),c=a.split("\n"),f=c.length,b=new Float32Array(f),d=parseFloat(c[0].trim().split(/\s+/)[4]),b[0]=d,g=d,h=d,e=1;f>e;e++)d=parseFloat(c[e].trim().split(/\s+/)[4]),b[e]=d,g=Math.min(g,d),h=Math.max(h,d);return{values:b,min:g,max:h}}self.addEventListener("message",function(b){var c=b.data,d=c.data;self.postMessage(a(d))})}(); \ No newline at end of file diff --git a/build/brainbrowser-2.2.0/workers/freesurferasc.worker.js b/build/brainbrowser-2.2.0/workers/freesurferasc.worker.js index e5922a40..2f4ea37b 100644 --- a/build/brainbrowser-2.2.0/workers/freesurferasc.worker.js +++ b/build/brainbrowser-2.2.0/workers/freesurferasc.worker.js @@ -27,5 +27,6 @@ * Author: Nicolas Kassis * Author: Paul Mougel * -* three.js (c) 2010-2014 three.js authors, used under the MIT license*/ +* three.js (c) 2010-2014 three.js authors, used under the MIT license +*/ !function(){"use strict";function a(a){var b,c,d,e,f,g,h,i,j={};for(a=a.split("\n"),d=a[1].trim().split(/\s+/),e=parseInt(d[0],10),f=parseInt(d[1],10),b=new Float32Array(3*e),c=new Uint32Array(3*f),h=0;e>h;h++)g=a[h+2].trim().split(/\s+/),i=3*h,b[i]=parseFloat(g[0]),b[i+1]=parseFloat(g[1]),b[i+2]=parseFloat(g[2]);for(h=0;f>h;h++)g=a[h+e+2].trim().split(/\s+/),i=3*h,c[i]=parseInt(g[0],10),c[i+1]=parseInt(g[1],10),c[i+2]=parseInt(g[2],10);return j.type="polygon",j.vertices=b,j.shapes=[{indices:c}],j}self.addEventListener("message",function(b){self.postMessage(a(b.data.data))})}(); \ No newline at end of file diff --git a/build/brainbrowser-2.2.0/workers/freesurferbin.intensity.worker.js b/build/brainbrowser-2.2.0/workers/freesurferbin.intensity.worker.js index 53ab17a3..06fc14cb 100644 --- a/build/brainbrowser-2.2.0/workers/freesurferbin.intensity.worker.js +++ b/build/brainbrowser-2.2.0/workers/freesurferbin.intensity.worker.js @@ -27,5 +27,6 @@ * Author: Nicolas Kassis * Author: Paul Mougel * -* three.js (c) 2010-2014 three.js authors, used under the MIT license*/ +* three.js (c) 2010-2014 three.js authors, used under the MIT license +*/ !function(){"use strict";function a(a){var c,d,e,f,g,h,i=new DataView(a),j=0,k=b(i);if(j+=3,16777215!==k)return{error:!0,error_message:"Unrecognized file format."};if(d=i.getUint32(j),j+=8,e=i.getUint32(j),j+=4,1!==e)return{error:!0,error_message:"Only one value per vertex supported. Number of values: "+e};for(c=new Float32Array(d),c[0]=f=g=i.getFloat32(j),j+=4,h=1;d>h;h++)c[h]=i.getFloat32(j),f=Math.min(f,c[h]),g=Math.max(g,c[h]),j+=4;return{values:c,min:f,max:g}}function b(a){var b,c=0;for(b=0;3>b;b++)c+=a.getUint8(b)<<8*(3-b-1);return c}self.addEventListener("message",function(b){self.postMessage(a(b.data.data))})}(); \ No newline at end of file diff --git a/build/brainbrowser-2.2.0/workers/freesurferbin.worker.js b/build/brainbrowser-2.2.0/workers/freesurferbin.worker.js index b46bf36c..53e07625 100644 --- a/build/brainbrowser-2.2.0/workers/freesurferbin.worker.js +++ b/build/brainbrowser-2.2.0/workers/freesurferbin.worker.js @@ -27,5 +27,6 @@ * Author: Nicolas Kassis * Author: Paul Mougel * -* three.js (c) 2010-2014 three.js authors, used under the MIT license*/ +* three.js (c) 2010-2014 three.js authors, used under the MIT license +*/ !function(){"use strict";function a(a){var c,d,e,f,g,h,i=new DataView(a),j=0,k=b(i);if(j+=3,16777214!==k)return{error:!0,error_message:"Only triangle meshes supported."};for(;10!==i.getUint8(j)||10!==i.getUint8(j+1);)j++;for(j+=2,d=i.getUint32(j),j+=4,f=3*i.getUint32(j),j+=4,c=new Float32Array(3*d),e=new Uint32Array(f),g=0;d>g;g++)h=3*g,c[h]=i.getFloat32(j),j+=4,c[h+1]=i.getFloat32(j),j+=4,c[h+2]=i.getFloat32(j),j+=4;for(g=0;f>g;g++)e[g]=i.getUint32(j),j+=4;return{vertices:c,shapes:[{indices:e}]}}function b(a){var b,c=0;for(b=0;3>b;b++)c+=a.getUint8(b)<<8*(3-b-1);return c}self.addEventListener("message",function(b){self.postMessage(a(b.data.data))})}(); \ No newline at end of file diff --git a/build/brainbrowser-2.2.0/workers/json.worker.js b/build/brainbrowser-2.2.0/workers/json.worker.js index 5af5f52c..d1219f6e 100644 --- a/build/brainbrowser-2.2.0/workers/json.worker.js +++ b/build/brainbrowser-2.2.0/workers/json.worker.js @@ -27,5 +27,6 @@ * Author: Nicolas Kassis * Author: Paul Mougel * -* three.js (c) 2010-2014 three.js authors, used under the MIT license*/ +* three.js (c) 2010-2014 three.js authors, used under the MIT license +*/ !function(){"use strict";function a(a){var e={name:a.name,type:a.type,shapes:[]};return e.vertices=b(a.vertices),a.colors=a.colors||a.color,a.colors&&(e.colors=b(a.colors),(e.vertices.length===e.colors.length||3===e.colors.length)&&(e.colors=c(e.colors))),a.normals&&(e.normals=b(a.normals)),void 0===a.shapes&&(a.shapes=[]),a.indices&&a.shapes.push({indices:a.indices}),a.shapes.forEach(function(a){var c=b(a.indices);a.one_indexed&&d(c),a.color=a.color||a.colors,Array.isArray(a.color)&&3===a.color.length&&a.color.push(1),e.shapes.push({name:a.name,indices:c,color:a.color})}),e}function b(a,c){if(!Array.isArray(a))return[a];if(c=c||0,c===a.length)return[];var d,e,f=[];for(d=0,e=a.length;e>d;d++)f.push.apply(f,b(a[d]));return f}function c(a){var b,c,d,e;for(b=new Float32Array(4*a.length/3),c=d=0,e=a.length;e>c;)b[d++]=a[c++],b[d++]=a[c++],b[d++]=a[c++],b[d++]=1;return b}function d(a){var b,c;for(b=0,c=a.length;c>b;b++)a[b]=a[b]-1}self.addEventListener("message",function(b){self.postMessage(a(JSON.parse(b.data.data)))})}(); \ No newline at end of file diff --git a/build/brainbrowser-2.2.0/workers/mniobj.intensity.worker.js b/build/brainbrowser-2.2.0/workers/mniobj.intensity.worker.js index 6acb3776..c4727aef 100644 --- a/build/brainbrowser-2.2.0/workers/mniobj.intensity.worker.js +++ b/build/brainbrowser-2.2.0/workers/mniobj.intensity.worker.js @@ -27,5 +27,6 @@ * Author: Nicolas Kassis * Author: Paul Mougel * -* three.js (c) 2010-2014 three.js authors, used under the MIT license*/ +* three.js (c) 2010-2014 three.js authors, used under the MIT license +*/ !function(){"use strict";function a(a){var b,c,d,e,f={};for(f.values=a.trim().split(/\s+/).map(parseFloat),d=f.values[0],e=f.values[0],b=1,c=f.values.length;c>b;b++)d=Math.min(d,f.values[b]),e=Math.max(e,f.values[b]);return f.min=d,f.max=e,f}self.addEventListener("message",function(b){var c=b.data,d=c.data;self.postMessage(a(d))})}(); \ No newline at end of file diff --git a/build/brainbrowser-2.2.0/workers/mniobj.worker.js b/build/brainbrowser-2.2.0/workers/mniobj.worker.js index 65d68693..8324b163 100644 --- a/build/brainbrowser-2.2.0/workers/mniobj.worker.js +++ b/build/brainbrowser-2.2.0/workers/mniobj.worker.js @@ -27,5 +27,6 @@ * Author: Nicolas Kassis * Author: Paul Mougel * -* three.js (c) 2010-2014 three.js authors, used under the MIT license*/ +* three.js (c) 2010-2014 three.js authors, used under the MIT license +*/ !function(){"use strict";function a(a,l){j=a.trim().split(/\s+/).reverse(),k=j.length-1;var m,n,o,p,q,r,s,t=[],u=l.split,v={},w=i();if(v.split=!1,v.type="P"===w?"polygon":"L"===w?"line":w,"polygon"===v.type)b(v),v.num_vertices=parseInt(i(),10),c(v),d(v),v.nitems=parseInt(i(),10);else{if("line"!==v.type)return v.error=!0,void(v.error_message='Invalid MNI Object class: must be "polygon" or "line"');b(v),v.num_vertices=parseInt(i(),10),c(v),v.nitems=parseInt(i(),10)}if(e(v),f(v),g(v),"polygon"===v.type)u&&(v.split=!0,h(v));else if("line"===v.type){for(r=v.indices,s=v.end_indices,q=v.nitems,m=0;q>m;m++){for(o=0===m?0:s[m-1],t.push(r[o]),p=s[m],n=o+1;p-1>n;n++)t.push(r[n]),t.push(r[n]);t.push(r[p-1])}v.indices=t}return v}function b(a){"polygon"===a.type?a.surface_properties={ambient:parseFloat(i()),diffuse:parseFloat(i()),specular_reflectance:parseFloat(i()),specular_scattering:parseFloat(i()),transparency:parseFloat(i())}:"line"===a.type&&(a.surfaceProperties={width:i()})}function c(a){var b,c=3*a.num_vertices,d=new Float32Array(c);for(b=0;c>b;b++)d[b]=parseFloat(i());a.vertices=d}function d(a){var b,c=3*a.num_vertices,d=new Float32Array(c);for(b=0;c>b;b++)d[b]=parseFloat(i());a.normals=d}function e(a){var b,c,d,e=parseInt(i(),10);if(0===e)for(b=new Float32Array(4),c=0;4>c;c++)b[c]=parseFloat(i());else if(1===e)for(d=4*a.num_polygons,b=new Float32Array(d),c=0;d>c;c++)b[c]=parseFloat(i());else if(2===e)for(d=4*a.num_vertices,b=new Float32Array(d),c=0;d>c;c++)b[c]=parseFloat(i());else a.error=!0,a.error_message="Invalid color flag: "+e;a.color_flag=e,a.colors=b}function f(a){var b,c=a.nitems,d=new Uint32Array(c);for(b=0;c>b;b++)d[b]=parseInt(i(),10);a.end_indices=d}function g(a){var b,c=k+1,d=new Float32Array(c);for(b=0;c>b;b++)d[b]=parseInt(i(),10);a.indices=d}function h(a){var b=a.indices.length;a.left={indices:Array.prototype.slice.call(a.indices,0,b/2)},a.right={indices:Array.prototype.slice.call(a.indices,b/2)}}function i(){return j[k--]}var j,k;self.addEventListener("message",function(b){var c=b.data,d=a(c.data,c.options)||{error:!0,error_message:"Error parsing data."},e={type:d.type,vertices:d.vertices,normals:d.normals,colors:d.colors,surface_properties:d.surface_properties,split:d.split,error:d.error,error_message:d.error_message};e.shapes=e.split?[{indices:d.left.indices},{indices:d.right.indices}]:[{indices:d.indices}],self.postMessage(e)})}(); \ No newline at end of file diff --git a/build/brainbrowser-2.2.0/workers/wavefrontobj.worker.js b/build/brainbrowser-2.2.0/workers/wavefrontobj.worker.js index d8dc78f8..4f9243ef 100644 --- a/build/brainbrowser-2.2.0/workers/wavefrontobj.worker.js +++ b/build/brainbrowser-2.2.0/workers/wavefrontobj.worker.js @@ -27,5 +27,6 @@ * Author: Nicolas Kassis * Author: Paul Mougel * -* three.js (c) 2010-2014 three.js authors, used under the MIT license*/ +* three.js (c) 2010-2014 three.js authors, used under the MIT license +*/ !function(){"use strict";function a(a){var b,c,d,e,f,g,h,i,j,k,l,m,n,o=[],p=[],q=[],r={};for(a=a.split("\n"),r.shapes=[],b={faces:[],indices:[],texture_indices:[],normal_indices:[]},r.shapes.push(b),i=0,l=a.length;l>i;i++)if(f=a[i].replace(/^\s+/,"").replace(/\s+$/,"").split(/\s+/),g=f[0],h=f.length,!g.match("#")||""===f)switch(g){case"o":case"g":b={name:f[1],faces:[],indices:[],texture_indices:[],normal_indices:[]},r.shapes.push(b);break;case"v":o.push(parseFloat(f[1])),o.push(parseFloat(f[2])),o.push(parseFloat(f[3]));break;case"vt":for(j=1;h>j;j++)p.push(parseFloat(f[j]));break;case"vn":q.push(parseFloat(f[1])),q.push(parseFloat(f[2])),q.push(parseFloat(f[3]));break;case"f":m=[],c=b.indices,d=b.texture_indices,e=b.normal_indices;var s=f[1].split("/");for(k=2;h-1>k;k++)m.push(parseInt(s[0],10)-1),c.push(parseInt(s[0],10)-1),d.push(parseInt(s[1],10)-1),s[2]&&e.push(parseInt(s[2],10)-1),n=f[k].split("/"),m.push(parseInt(n[0],10)-1),c.push(parseInt(n[0],10)-1),d.push(parseInt(n[1],10)-1),n[2]&&e.push(parseInt(n[2],10)-1),n=f[k+1].split("/"),m.push(parseInt(n[0],10)-1),c.push(parseInt(n[0],10)-1),d.push(parseInt(n[1],10)-1),n[2]&&e.push(parseInt(n[2],10)-1);b.faces.push(m)}return r.type="polygon",r.vertices=o,r.normals=q,r.texture_coords=p,r}self.addEventListener("message",function(b){self.postMessage(a(b.data.data))})}(); \ No newline at end of file diff --git a/build/brainbrowser-2.2.0/workers/wireframe.worker.js b/build/brainbrowser-2.2.0/workers/wireframe.worker.js index 8642b83c..18d1191e 100644 --- a/build/brainbrowser-2.2.0/workers/wireframe.worker.js +++ b/build/brainbrowser-2.2.0/workers/wireframe.worker.js @@ -27,5 +27,6 @@ * Author: Nicolas Kassis * Author: Paul Mougel * -* three.js (c) 2010-2014 three.js authors, used under the MIT license*/ +* three.js (c) 2010-2014 three.js authors, used under the MIT license +*/ !function(){"use strict";function a(a,b){var c,d,e,f,g,h=new Float32Array(2*a.length),i=new Float32Array(2*b.length),j=a.length/3;for(c=0;j>c;c+=3)e=3*c,f=4*c,d=2*e,g=2*f,h[d]=a[e],h[d+1]=a[e+1],h[d+2]=a[e+2],h[d+3]=a[e+3],h[d+4]=a[e+4],h[d+5]=a[e+5],h[d+6]=a[e+3],h[d+7]=a[e+4],h[d+8]=a[e+5],h[d+9]=a[e+6],h[d+10]=a[e+7],h[d+11]=a[e+8],h[d+12]=a[e+6],h[d+13]=a[e+7],h[d+14]=a[e+8],h[d+15]=a[e],h[d+16]=a[e+1],h[d+17]=a[e+2],i[g]=b[f],i[g+1]=b[f+1],i[g+2]=b[f+2],i[g+3]=b[f+3],i[g+4]=b[f+4],i[g+5]=b[f+5],i[g+6]=b[f+6],i[g+7]=b[f+7],i[g+8]=b[f+4],i[g+9]=b[f+5],i[g+10]=b[f+6],i[g+11]=b[f+7],i[g+12]=b[f+8],i[g+13]=b[f+9],i[g+14]=b[f+10],i[g+15]=b[f+11],i[g+16]=b[f+8],i[g+17]=b[f+9],i[g+18]=b[f+10],i[g+19]=b[f+11],i[g+20]=b[f],i[g+21]=b[f+1],i[g+22]=b[f+2],i[g+23]=b[f+3];return{positions:h,colors:i}}self.addEventListener("message",function(b){var c=b.data;self.postMessage(a(c.positions,c.colors))})}(); \ No newline at end of file diff --git a/release/brainbrowser-2.2.0.tar.gz b/release/brainbrowser-2.2.0.tar.gz index df722f2bb03eabf70c504a1163beb2c719f901dd..f9d9ae0548db2f92723046d7db997238460d4e69 100644 GIT binary patch delta 149541 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 z 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 delta 149567 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 z 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