aframe-extras.loaders.min.js 43 KB

1
  1. !function e(t,r,n){function i(a,s){if(!r[a]){if(!t[a]){var c="function"==typeof require&&require;if(!s&&c)return c(a,!0);if(o)return o(a,!0);var l=new Error("Cannot find module '"+a+"'");throw l.code="MODULE_NOT_FOUND",l}var u=r[a]={exports:{}};t[a][0].call(u.exports,function(e){var r=t[a][1][e];return i(r||e)},u,u.exports,e,t,r,n)}return r[a].exports}for(var o="function"==typeof require&&require,a=0;a<n.length;a++)i(n[a]);return i}({1:[function(e,t,r){e("./src/loaders").registerAll()},{"./src/loaders":8}],2:[function(e,t,r){!function(){function e(e){var t=new Map;if("Video"in e.Objects.subNodes){var r=e.Objects.subNodes.Video;for(var n in r){if("Content"in r[n].properties){var i=function(e){var t,r=e.properties.Content,n=e.properties.RelativeFilename||e.properties.Filename,i=n.slice(n.lastIndexOf(".")+1).toLowerCase();switch(i){case"bmp":t="image/bmp";break;case"jpg":t="image/jpeg";break;case"png":t="image/png";break;case"tif":t="image/tiff";break;default:return void console.warn("FBXLoader: No support image type "+i)}if("string"==typeof r)return"data:"+t+";base64,"+r;var o=new Uint8Array(r);return window.URL.createObjectURL(new Blob([o],{type:t}))}(r[n]);t.set(parseInt(n),i)}}}return t}function r(e,t,r,n){var i=new Map;if("Texture"in e.Objects.subNodes){var o=e.Objects.subNodes.Texture;for(var a in o){var s=function(e,t,r,n){var i,o=e.id,a=e.name,s=e.properties.FileName,c=e.properties.RelativeFilename,l=n.get(o).children;if(void 0!==l&&l.length>0&&r.has(l[0].ID))i=r.get(l[0].ID);else if(void 0!==c&&"/"!==c[0]&&null===c.match(/^[a-zA-Z]:/))i=c;else{var u=s.split(/[\\\/]/);i=u.length>0?u[u.length-1]:s}var f=t.path;0!==i.indexOf("blob:")&&0!==i.indexOf("data:")||t.setPath(void 0);var p=t.load(i);p.name=a,p.FBX_ID=o;var h=e.properties.WrapModeU,d=e.properties.WrapModeV,m=void 0!==h?h.value:0,v=void 0!==d?d.value:0;return p.wrapS=0===m?THREE.RepeatWrapping:THREE.ClampToEdgeWrapping,p.wrapT=0===v?THREE.RepeatWrapping:THREE.ClampToEdgeWrapping,t.setPath(f),p}(o[a],t,r,n);i.set(parseInt(a),s)}}return i}function n(e,t,r){var n=new Map;if("Material"in e.Objects.subNodes){var i=e.Objects.subNodes.Material;for(var o in i){var a=function(e,t,r){var n=e.id,i=e.attrName,o=e.properties.ShadingModel;"object"==typeof o&&(o=o.value);if(!r.has(n))return null;var a,s=r.get(n).children,c=function(e,t,r){var n={};e.Diffuse&&(n.color=_(e.Diffuse));e.Specular&&(n.specular=_(e.Specular));e.Shininess&&(n.shininess=e.Shininess.value);e.Emissive&&(n.emissive=_(e.Emissive));e.EmissiveFactor&&(n.emissiveIntensity=e.EmissiveFactor.value);e.Opacity&&(n.opacity=e.Opacity.value);n.opacity<1&&(n.transparent=!0);for(var i=0,o=r.length;i<o;++i){var a=r[i],s=a.relationship;switch(s){case"DiffuseColor":case' "DiffuseColor':n.map=t.get(a.ID);break;case"Bump":case' "Bump':n.bumpMap=t.get(a.ID);break;case"NormalMap":case' "NormalMap':n.normalMap=t.get(a.ID);break;case"AmbientColor":case"EmissiveColor":case' "AmbientColor':case' "EmissiveColor':default:console.warn("THREE.FBXLoader: Unknown texture application of type %s, skipping texture.",s)}}return n}(e.properties,t,s);switch(o.toLowerCase()){case"phong":a=new THREE.MeshPhongMaterial;break;case"lambert":a=new THREE.MeshLambertMaterial;break;default:console.warn("THREE.FBXLoader: No implementation given for material type %s in FBXLoader.js. Defaulting to standard material.",o),a=new THREE.MeshStandardMaterial({color:3342591})}return a.setValues(c),a.name=i,a}(i[o],t,r);null!==a&&n.set(parseInt(o),a)}}return n}function i(e,t){var r={};if("Deformer"in e.Objects.subNodes){var n=e.Objects.subNodes.Deformer;for(var i in n){if("Skin"===n[i].attrType){var o=function(e,t){for(var r={},n=e.children,i=0,o=n.length;i<o;++i){var a=n[i],s=t[a.ID],c={FBX_ID:a.ID,index:i,indices:[],weights:[],transform:x(s.subNodes.Transform.properties.a),transformLink:x(s.subNodes.TransformLink.properties.a),linkMode:s.properties.Mode};"Indexes"in s.subNodes&&(c.indices=w(s.subNodes.Indexes.properties.a),c.weights=I(s.subNodes.Weights.properties.a)),r[a.ID]=c}return{map:r,bones:[]}}(t.get(parseInt(i)),n);o.FBX_ID=parseInt(i),r[i]=o}}}return r}function o(e,t,r){var n=new Map;if("Geometry"in e.Objects.subNodes){var i=e.Objects.subNodes.Geometry;for(var o in i){var s=t.get(parseInt(o)),c=function(e,t,r){switch(e.attrType){case"Mesh":return function(e,t,r){for(var n=0;n<t.children.length;++n){var i=r[t.children[n].ID];if(void 0!==i)break}return function(e,t){var r=new m,n=e.subNodes,i=I(n.Vertices.properties.a),o=w(n.PolygonVertexIndex.properties.a);if(n.LayerElementNormal)var s=function(e){var t=e.properties.MappingInformationType,r=e.properties.ReferenceInformationType,n=I(e.subNodes.Normals.properties.a),i=[];"IndexToDirect"===r&&("NormalIndex"in e.subNodes?i=w(e.subNodes.NormalIndex.properties.a):"NormalsIndex"in e.subNodes&&(i=w(e.subNodes.NormalsIndex.properties.a)));return{dataSize:3,buffer:n,indices:i,mappingType:t,referenceType:r}}(n.LayerElementNormal[0]);if(n.LayerElementUV)var c=function(e){var t=e.properties.MappingInformationType,r=e.properties.ReferenceInformationType,n=I(e.subNodes.UV.properties.a),i=[];"IndexToDirect"===r&&(i=w(e.subNodes.UVIndex.properties.a));return{dataSize:2,buffer:n,indices:i,mappingType:t,referenceType:r}}(n.LayerElementUV[0]);if(n.LayerElementColor)var l=function(e){var t=e.properties.MappingInformationType,r=e.properties.ReferenceInformationType,n=I(e.subNodes.Colors.properties.a),i=[];"IndexToDirect"===r&&(i=I(e.subNodes.ColorIndex.properties.a));return{dataSize:4,buffer:n,indices:i,mappingType:t,referenceType:r}}(n.LayerElementColor[0]);if(n.LayerElementMaterial)var u=function(e){var t=e.properties.MappingInformationType,r=e.properties.ReferenceInformationType;if("NoMappingInformation"===t)return{dataSize:1,buffer:[0],indices:[0],mappingType:"AllSame",referenceType:r};for(var n=w(e.subNodes.Materials.properties.a),i=[],o=0,a=n.length;o<a;++o)i.push(o);return{dataSize:1,buffer:n,indices:i,mappingType:t,referenceType:r}}(n.LayerElementMaterial[0]);var f={};if(t){var h=t.map;for(var v in h)for(var g=h[v],y=g.indices,E=0;E<y.length;E++){var b=y[E],T=g.weights[E];void 0===f[b]&&(f[b]=[]),f[b].push({id:g.index,weight:T})}}for(var R=[],_=0,x=!1,N=0;N<o.length;N++){var A=o[N],B=!1;A<0&&(A^=-1,o[N]=A,B=!0);var L=new p,H=[],F=[];if(L.position.fromArray(i,3*A),t){if(void 0!==f[A])for(var C=f[A],E=0,D=C.length;E<D;E++)F.push(C[E].weight),H.push(C[E].id);if(F.length>4){x||(console.warn("THREE.FBXLoader: Vertex has more than 4 skinning weights assigned to vertex. Deleting additional weights."),x=!0);var S=[0,0,0,0],k=[0,0,0,0];F.forEach(function(e,t){var r=e,n=H[t];k.forEach(function(e,t,i){if(r>e){i[t]=r,r=e;var o=S[t];S[t]=n,n=o}})}),H=S,F=k}for(V=F.length;V<4;++V)F[V]=0,H[V]=0;L.skinWeights.fromArray(F),L.skinIndices.fromArray(H)}if(s&&L.normal.fromArray(a(N,_,A,s)),c&&L.uv.fromArray(a(N,_,A,c)),l&&L.color.fromArray(a(N,_,A,l)),R.push(L),B){var O=new d;if(O.genTrianglesFromVertices(R),void 0!==u){var j=a(N,_,A,u);O.materialIndex=j[0]}else O.materialIndex=0;r.faces.push(O),R=[],_++,B=!1}}var M=r.flattenToBuffers(),P=new THREE.BufferGeometry;P.name=e.name,P.addAttribute("position",new THREE.Float32BufferAttribute(M.vertexBuffer,3)),M.normalBuffer.length>0&&P.addAttribute("normal",new THREE.Float32BufferAttribute(M.normalBuffer,3));M.uvBuffer.length>0&&P.addAttribute("uv",new THREE.Float32BufferAttribute(M.uvBuffer,2));n.LayerElementColor&&P.addAttribute("color",new THREE.Float32BufferAttribute(M.colorBuffer,3));t&&(P.addAttribute("skinIndex",new THREE.Float32BufferAttribute(M.skinIndexBuffer,4)),P.addAttribute("skinWeight",new THREE.Float32BufferAttribute(M.skinWeightBuffer,4)),P.FBX_Deformer=t);for(var U=M.materialIndexBuffer,X=U[0],z=0,V=0;V<U.length;++V)U[V]!==X&&(P.addGroup(z,V-z,X),X=U[V],z=V);return P}(e,i)}(e,t,r);case"NurbsCurve":return function(e){if(void 0===THREE.NURBSCurve)return console.error("THREE.FBXLoader: The loader relies on THREE.NURBSCurve for any nurbs present in the model. Nurbs will show up as empty geometry."),new THREE.BufferGeometry;var t=parseInt(e.properties.Order);if(isNaN(t))return console.error("THREE.FBXLoader: Invalid Order %s given for geometry ID: %s",e.properties.Order,e.id),new THREE.BufferGeometry;for(var r=t-1,n=I(e.subNodes.KnotVector.properties.a),i=[],o=I(e.subNodes.Points.properties.a),a=0,s=o.length;a<s;a+=4)i.push((new THREE.Vector4).fromArray(o,a));var c,l;if("Closed"===e.properties.Form)i.push(i[0]);else if("Periodic"===e.properties.Form){c=r,l=n.length-1-c;for(a=0;a<r;++a)i.push(i[a])}for(var u=new THREE.NURBSCurve(r,n,i,c,l).getPoints(7*i.length),f=new Float32Array(3*u.length),a=0,s=u.length;a<s;++a)u[a].toArray(f,3*a);var p=new THREE.BufferGeometry;return p.addAttribute("position",new THREE.BufferAttribute(f,3)),p}(e)}}(i[o],s,r);n.set(parseInt(o),c)}}return n}function a(e,t,r,n){return C[n.mappingType][n.referenceType](e,t,r,n)}function s(e,t,r,n,i){var o=new THREE.Group,a=e.Objects.subNodes.Model,s=[],l=new Map;for(var p in a){for(var h=parseInt(p),d=a[p],m=t.get(h),v=null,g=0;g<m.parents.length;++g)for(var y in r){if(re=(ee=(J=r[y]).map)[m.parents[g].ID]){var E=v;v=new THREE.Bone,J.bones[re.index]=v,null!==E&&v.add(E)}}if(!v)switch(d.attrType){case"Mesh":for(var b=null,_=null,N=[],L=0,H=m.children.length;L<H;++L){M=m.children[L];n.has(M.ID)&&(b=n.get(M.ID)),i.has(M.ID)&&N.push(i.get(M.ID))}if(N.length>1?_=N:N.length>0?_=N[0]:(_=new THREE.MeshStandardMaterial({color:3342591}),N.push(_)),"color"in b.attributes)for(var F=0,C=N.length;F<C;++F)N[F].vertexColors=THREE.VertexColors;if(b.FBX_Deformer){for(var k=0,j=N.length;k<j;++k)N[k].skinning=!0;v=new THREE.SkinnedMesh(b,_)}else v=new THREE.Mesh(b,_);break;case"NurbsCurve":for(var b=null,L=0,H=m.children.length;L<H;++L){var M=m.children[L];n.has(M.ID)&&(b=n.get(M.ID))}_=new THREE.LineBasicMaterial({color:3342591,linewidth:5}),v=new THREE.Line(b,_);break;default:v=new THREE.Object3D}v.name=d.attrName.replace(/:/,"").replace(/_/,"").replace(/-/,""),v.FBX_ID=h,s.push(v),l.set(h,v)}for(var P=0,U=s.length;P<U;++P){if("Lcl_Translation"in(d=a[(v=s[P]).FBX_ID]).properties&&v.position.fromArray(I(d.properties.Lcl_Translation.value)),"Lcl_Rotation"in d.properties){var X=I(d.properties.Lcl_Rotation.value).map(A);X.push("ZYX"),v.rotation.fromArray(X)}if("Lcl_Scaling"in d.properties&&v.scale.fromArray(I(d.properties.Lcl_Scaling.value)),"PreRotation"in d.properties){var z=(new THREE.Euler).setFromVector3(R(d.properties.PreRotation).multiplyScalar(O),"ZYX");z=(new THREE.Quaternion).setFromEuler(z);var V=(new THREE.Quaternion).setFromEuler(v.rotation);z.multiply(V),v.rotation.setFromQuaternion(z,"ZYX")}for(var m=t.get(v.FBX_ID),W=0;W<m.parents.length;W++){var Y=B(s,function(e){return e.FBX_ID===m.parents[W].ID});if(Y>-1){s[Y].add(v);break}}null===v.parent&&o.add(v)}o.updateMatrixWorld(!0);var G=e.Objects.subNodes.Pose;for(var p in G)if("BindPose"===G[p].attrType){G=G[p];break}if(G)for(var Z=G.subNodes.PoseNode,$=new Map,q=0,K=Z.length;q<K;++q){var Q=x((d=Z[q]).subNodes.Matrix.properties.a);$.set(parseInt(d.id),Q)}for(var y in r){var J=r[y],ee=J.map;for(var te in ee){var re=ee[te],ne=re.index,ie=J.bones[ne];if(!$.has(ie.FBX_ID))break;var oe=$.get(ie.FBX_ID);ie.matrixWorld.copy(oe)}J.skeleton=new THREE.Skeleton(J.bones);for(var ae=(m=t.get(J.FBX_ID)).parents,se=0,ce=ae.length;se<ce;++se){var le=ae[se];if(n.has(le.ID))for(var ue=le.ID,fe=t.get(ue),g=0;g<fe.parents.length;++g)if(l.has(fe.parents[g].ID)){(v=l.get(fe.parents[g].ID)).bind(J.skeleton,v.matrixWorld);break}}}o.updateMatrixWorld(!0),o.skeleton={bones:s};return function(e,t){void 0===e.animations&&(e.animations=[]);var r=t.stacks;for(var n in r){for(var i=r[n],o={name:i.name,fps:30,length:i.length,hierarchy:[]},a=e.skeleton.bones,s=0,c=a.length;s<c;++s){var l=(d=a[s]).name.replace(/.*:/,""),p=B(a,function(e){return d.parent===e});o.hierarchy.push({parent:p,name:l,keys:[]})}for(var h=0;h<=i.frames;h++)for(var s=0,c=a.length;s<c;++s)for(var d=a[s],m=s,v=i.layers[0][m],g=0,y=o.hierarchy.length;g<y;++g){var E=o.hierarchy[g];E.name===d.name&&E.keys.push(function(e,t,r,n){var i={time:n/e.fps,pos:r.position.toArray(),rot:r.quaternion.toArray(),scl:r.scale.toArray()};if(void 0===t)return i;try{if(u(t,"T")&&f(t.T,n)&&(i.pos=[t.T.curves.x.values[n],t.T.curves.y.values[n],t.T.curves.z.values[n]]),u(t,"R")&&f(t.R,n)){var o=t.R.curves.x.values[n],a=t.R.curves.y.values[n],s=t.R.curves.z.values[n];S.setFromEuler(D.set(o,a,s,"ZYX")),i.rot=S.toArray()}u(t,"S")&&f(t.S,n)&&(i.scl=[t.S.curves.x.values[n],t.S.curves.y.values[n],t.S.curves.z.values[n]])}catch(e){console.log("THREE.FBXLoader: ",r),console.log("THREE.FBXLoader: ",e)}return i}(t,v,d,h))}e.animations.push(THREE.AnimationClip.parseAnimation(o,a))}}(o,function(e,t,r){var n=e.Objects.subNodes.AnimationCurveNode,i=e.Objects.subNodes.AnimationCurve,o=e.Objects.subNodes.AnimationLayer,a=e.Objects.subNodes.AnimationStack,s={curves:new Map,layers:{},stacks:{},length:0,fps:30,frames:0},l=[];for(var u in n)if(u.match(/\d+/)){var f=function(e,t,r,n){var i=e.Objects.subNodes.Model,o={id:t.id,attr:t.attrName,internalID:t.id,attrX:!1,attrY:!1,attrZ:!1,containerBoneID:-1,containerID:-1,curves:{x:null,y:null,z:null},preRotations:null};if(!o.attr.match(/S|R|T/))return null;for(var a in t.properties)a.match(/X/)&&(o.attrX=!0),a.match(/Y/)&&(o.attrY=!0),a.match(/Z/)&&(o.attrZ=!0);for(var s=r.get(o.id).parents,c=s.length-1;c>=0;--c){var l=B(n.skeleton.bones,function(e){return e.FBX_ID===s[c].ID});if(l>-1){o.containerBoneID=l,o.containerID=s[c].ID;var u=i[o.containerID.toString()];"PreRotation"in u.properties&&(o.preRotations=R(u.properties.PreRotation).multiplyScalar(Math.PI/180));break}}return o}(e,n[u],t,r);l.push(f)}for(var p=new Map,h=0;h<l.length;++h)null!==l[h]&&p.set(l[h].id,l[h]);var d=[];for(u in i)if(u.match(/\d+/)){var m=function(e){return{version:null,id:e.id,internalID:e.id,times:I(e.subNodes.KeyTime.properties.a).map(T),values:I(e.subNodes.KeyValueFloat.properties.a),attrFlag:w(e.subNodes.KeyAttrFlags.properties.a),attrData:I(e.subNodes.KeyAttrDataFloat.properties.a)}}(i[u]);if(!t.has(m.id))continue;d.push(m);var v=t.get(m.id).parents[0],g=v.ID,y=v.relationship,E="";if(y.match(/X/))E="x";else if(y.match(/Y/))E="y";else{if(!y.match(/Z/))continue;E="z"}p.get(g).curves[E]=m}p.forEach(function(e){var t=e.containerBoneID;if(s.curves.has(t)||s.curves.set(t,{T:null,R:null,S:null}),s.curves.get(t)[e.attr]=e,"R"===e.attr){var r=e.curves;if(null===r.x&&(r.x={version:null,times:[0],values:[0]}),null===r.y&&(r.y={version:null,times:[0],values:[0]}),null===r.z&&(r.z={version:null,times:[0],values:[0]}),r.x.values=r.x.values.map(A),r.y.values=r.y.values.map(A),r.z.values=r.z.values.map(A),null!==e.preRotations){var n=(new THREE.Euler).setFromVector3(e.preRotations,"ZYX");n=(new THREE.Quaternion).setFromEuler(n);for(var i=new THREE.Euler,o=new THREE.Quaternion,a=0;a<r.x.times.length;++a)i.set(r.x.values[a],r.y.values[a],r.z.values[a],"ZYX"),o.setFromEuler(i).premultiply(n),i.setFromQuaternion(o,"ZYX"),r.x.values[a]=i.x,r.y.values[a]=i.y,r.z.values[a]=i.z}}});for(var u in o){for(var b=[],_=t.get(parseInt(u)).children,x=0;x<_.length;x++)if(p.has(_[x].ID)){var N=p.get(_[x].ID),L=N.containerBoneID;void 0===b[L]&&(b[L]={T:null,R:null,S:null}),b[L][N.attr]=N}s.layers[u]=b}for(var u in a){for(var H=[],_=t.get(parseInt(u)).children,F={max:0,min:Number.MAX_VALUE},x=0;x<_.length;++x){var C=s.layers[_[x].ID];if(void 0!==C){H.push(C);for(var D=0,S=C.length;D<S;++D){(b=C[D])&&function(e,t){e.R&&c(e.R.curves,t);e.S&&c(e.S.curves,t);e.T&&c(e.T.curves,t)}(b,F)}}}F.max>F.min&&(s.stacks[u]={name:a[u].attrName,layers:H,length:F.max-F.min,frames:30*(F.max-F.min)})}return s}(e,t,o)),o}function c(e,t){e.x&&l(e.x,t),e.y&&l(e.y,t),e.z&&l(e.z,t)}function l(e,t){t.max=e.times[e.times.length-1]>t.max?e.times[e.times.length-1]:t.max,t.min=e.times[0]<t.min?e.times[0]:t.min}function u(e,t){if(void 0===e)return!1;var r=e[t];return!!r&&k.every(function(e){return null!==r.curves[e]})}function f(e,t){return k.every(function(r){return function(e,t){return void 0!==e.values[t]}(e.curves[r],t)})}function p(){this.position=new THREE.Vector3,this.normal=new THREE.Vector3,this.uv=new THREE.Vector2,this.color=new THREE.Vector3,this.skinIndices=new THREE.Vector4(0,0,0,0),this.skinWeights=new THREE.Vector4(0,0,0,0)}function h(){this.vertices=[]}function d(){this.triangles=[],this.materialIndex=0}function m(){this.faces=[],this.skeleton=null}function v(){}function g(){}function y(e,t){this.dv=new DataView(e),this.offset=0,this.littleEndian=void 0===t||t}function E(){}function b(e){var t=e.match(/FBXVersion: (\d+)/);if(t){return parseInt(t[1])}throw new Error("THREE.FBXLoader: Cannot find the version number for the file given.")}function T(e){return e/46186158e3}function I(e){for(var t=e.split(","),r=0,n=t.length;r<n;r++)t[r]=parseFloat(t[r]);return t}function w(e){for(var t=e.split(","),r=0,n=t.length;r<n;r++)t[r]=parseInt(t[r]);return t}function R(e){return(new THREE.Vector3).fromArray(e.value)}function _(e){return(new THREE.Color).fromArray(e.value)}function x(e){return(new THREE.Matrix4).fromArray(I(e))}function N(e,t,r){void 0===t&&(t=0),void 0===r&&(r=e.byteLength);var n=new Uint8Array(e,t,r);if(void 0!==window.TextDecoder)return(new TextDecoder).decode(n);for(var i="",o=0,a=n.length;o<a;o++)i+=String.fromCharCode(n[o]);return i}function A(e){return e*O}function B(e,t){for(var r=0,n=e.length;r<n;r++)if(t(e[r]))return r;return-1}function L(e,t){for(var r=0,n=e.length,i=t.length;r<i;r++,n++)e[n]=t[r]}function H(e,t,r,n){for(var i=r,o=0;i<n;i++,o++)e[o]=t[i];return e}t.exports=THREE.FBXLoader=function(e){this.manager=void 0!==e?e:THREE.DefaultLoadingManager},Object.assign(THREE.FBXLoader.prototype,{load:function(e,t,r,n){var i=this,o=THREE.Loader.prototype.extractUrlBase(e),a=new THREE.FileLoader(this.manager);a.setResponseType("arraybuffer"),a.load(e,function(r){try{var a=i.parse(r,o);t(a)}catch(t){window.setTimeout(function(){n&&n(t),i.manager.itemError(e)},0)}},r,n)},parse:function(t,a){var c;if(function(e){var t="Kaydara FBX Binary \0";return e.byteLength>=t.length&&t===N(e,0,t.length)}(t))c=(new g).parse(t);else{var l=N(t);if(!function(e){function t(t){var r=e[t-1];return e=e.slice(n+t),n++,r}for(var r=["K","a","y","d","a","r","a","\\","F","B","X","\\","B","i","n","a","r","y","\\","\\"],n=0,i=0;i<r.length;++i)if(t(1)===r[i])return!1;return!0}(l))throw new Error("THREE.FBXLoader: Unknown format.");if(b(l)<7e3)throw new Error("THREE.FBXLoader: FBX version not supported, FileVersion: "+b(l));c=(new v).parse(l)}var u=function(e){var t=new Map;if("Connections"in e)for(var r=e.Connections.properties.connections,n=0,i=r.length;n<i;++n){var o=r[n];t.has(o[0])||t.set(o[0],{parents:[],children:[]});var a={ID:o[1],relationship:o[2]};t.get(o[0]).parents.push(a),t.has(o[1])||t.set(o[1],{parents:[],children:[]});var s={ID:o[0],relationship:o[2]};t.get(o[1]).children.push(s)}return t}(c),f=e(c),p=n(c,r(c,new THREE.TextureLoader(this.manager).setPath(a),f,u),u),h=i(c,u);return s(c,u,h,o(c,u,h),p)}});var F=[],C={ByPolygonVertex:{Direct:function(e,t,r,n){var i=e*n.dataSize,o=e*n.dataSize+n.dataSize;return H(F,n.buffer,i,o)},IndexToDirect:function(e,t,r,n){var i=n.indices[e],o=i*n.dataSize,a=i*n.dataSize+n.dataSize;return H(F,n.buffer,o,a)}},ByPolygon:{Direct:function(e,t,r,n){var i=t*n.dataSize,o=t*n.dataSize+n.dataSize;return H(F,n.buffer,i,o)},IndexToDirect:function(e,t,r,n){var i=n.indices[t],o=i*n.dataSize,a=i*n.dataSize+n.dataSize;return H(F,n.buffer,o,a)}},ByVertice:{Direct:function(e,t,r,n){var i=r*n.dataSize,o=r*n.dataSize+n.dataSize;return H(F,n.buffer,i,o)}},AllSame:{IndexToDirect:function(e,t,r,n){var i=n.indices[0]*n.dataSize,o=n.indices[0]*n.dataSize+n.dataSize;return H(F,n.buffer,i,o)}}},D=new THREE.Euler,S=new THREE.Quaternion,k=["x","y","z"];Object.assign(p.prototype,{copy:function(e){var t=e||new p;return t.position.copy(this.position),t.normal.copy(this.normal),t.uv.copy(this.uv),t.skinIndices.copy(this.skinIndices),t.skinWeights.copy(this.skinWeights),t},flattenToBuffers:function(e,t,r,n,i,o){this.position.toArray(e,e.length),this.normal.toArray(t,t.length),this.uv.toArray(r,r.length),this.color.toArray(n,n.length),this.skinIndices.toArray(i,i.length),this.skinWeights.toArray(o,o.length)}}),Object.assign(h.prototype,{copy:function(e){for(var t=e||new h,r=0;r<this.vertices.length;++r)this.vertices[r].copy(t.vertices[r]);return t},flattenToBuffers:function(e,t,r,n,i,o){for(var a=this.vertices,s=0,c=a.length;s<c;++s)a[s].flattenToBuffers(e,t,r,n,i,o)}}),Object.assign(d.prototype,{copy:function(e){for(var t=e||new d,r=0;r<this.triangles.length;++r)this.triangles[r].copy(t.triangles[r]);return t.materialIndex=this.materialIndex,t},genTrianglesFromVertices:function(e){for(var t=2;t<e.length;++t){var r=new h;r.vertices[0]=e[0],r.vertices[1]=e[t-1],r.vertices[2]=e[t],this.triangles.push(r)}},flattenToBuffers:function(e,t,r,n,i,o,a){for(var s=this.triangles,c=this.materialIndex,l=0,u=s.length;l<u;++l)s[l].flattenToBuffers(e,t,r,n,i,o),L(a,[c,c,c])}}),Object.assign(m.prototype,{flattenToBuffers:function(){for(var e=[],t=[],r=[],n=[],i=[],o=[],a=[],s=this.faces,c=0,l=s.length;c<l;++c)s[c].flattenToBuffers(e,t,r,n,i,o,a);return{vertexBuffer:e,normalBuffer:t,uvBuffer:r,colorBuffer:n,skinIndexBuffer:i,skinWeightBuffer:o,materialIndexBuffer:a}}}),Object.assign(v.prototype,{getPrevNode:function(){return this.nodeStack[this.currentIndent-2]},getCurrentNode:function(){return this.nodeStack[this.currentIndent-1]},getCurrentProp:function(){return this.currentProp},pushStack:function(e){this.nodeStack.push(e),this.currentIndent+=1},popStack:function(){this.nodeStack.pop(),this.currentIndent-=1},setCurrentProp:function(e,t){this.currentProp=e,this.currentPropName=t},parse:function(e){this.currentIndent=0,this.allNodes=new E,this.nodeStack=[],this.currentProp=[],this.currentPropName="";for(var t=e.split("\n"),r=0,n=t.length;r<n;r++){if(!(l=t[r]).match(/^[\s\t]*;/)&&!l.match(/^[\s\t]*$/)){var i=new RegExp("^\\t{"+this.currentIndent+"}(\\w+):(.*){",""),o=l.match(i);if(o){for(var a=o[1].trim().replace(/^"/,"").replace(/"$/,""),s=o[2].split(","),c=0,l=s.length;c<l;c++)s[c]=s[c].trim().replace(/^"/,"").replace(/"$/,"");this.parseNodeBegin(l,a,s||null)}else{var u=new RegExp("^\\t{"+this.currentIndent+"}(\\w+):[\\s\\t\\r\\n](.*)");if(o=l.match(u)){var f=o[1].replace(/^"/,"").replace(/"$/,"").trim(),p=o[2].replace(/^"/,"").replace(/"$/,"").trim();"Content"===f&&","===p&&(p=t[++r].replace(/"/g,"").trim()),this.parseNodeProperty(l,f,p)}else{var h=new RegExp("^\\t{"+(this.currentIndent-1)+"}}");l.match(h)?this.nodeEnd():l.match(/^[^\s\t}]/)&&this.parseNodePropertyContinued(l)}}}}return this.allNodes},parseNodeBegin:function(e,t,r){var n={name:t,properties:{},subNodes:{}},i=this.parseNodeAttr(r),o=this.getCurrentNode();if(0===this.currentIndent)this.allNodes.add(t,n);else if(t in o.subNodes){var a=o.subNodes[t];this.isFlattenNode(o.subNodes[t])&&(""===i.id?(o.subNodes[t]=[],o.subNodes[t].push(a)):(o.subNodes[t]={},o.subNodes[t][a.id]=a)),""===i.id?o.subNodes[t].push(n):o.subNodes[t][i.id]=n}else"number"==typeof i.id||i.id.match(/^\d+$/)?(o.subNodes[t]={},o.subNodes[t][i.id]=n):o.subNodes[t]=n;r&&(n.id=i.id,n.attrName=i.name,n.attrType=i.type),this.pushStack(n)},parseNodeAttr:function(e){var t=e[0];""!==e[0]&&(t=parseInt(e[0]),isNaN(t)&&(t=e[0]));var r="",n="";return e.length>1&&(r=e[1].replace(/^(\w+)::/,""),n=e[2]),{id:t,name:r,type:n}},parseNodeProperty:function(e,t,r){var n=this.getCurrentNode(),i=n.name;if(void 0!==i){if(i.match(/Properties(\d)+/))return void this.parseNodeSpecialProperty(e,t,r)}if("C"===t){var o=r.split(",").slice(1),a=parseInt(o[0]),s=parseInt(o[1]),c=r.split(",").slice(3);t="connections",L(r=[a,s],c),void 0===n.properties[t]&&(n.properties[t]=[])}if("Node"===t){var l=parseInt(r);n.properties.id=l,n.id=l}t in n.properties?Array.isArray(n.properties[t])?n.properties[t].push(r):n.properties[t]+=r:Array.isArray(n.properties[t])?n.properties[t].push(r):n.properties[t]=r,this.setCurrentProp(n.properties,t)},parseNodePropertyContinued:function(e){this.currentProp[this.currentPropName]+=e},parseNodeSpecialProperty:function(e,t,r){for(var n=r.split('",'),i=0,o=n.length;i<o;i++)n[i]=n[i].trim().replace(/^\"/,"").replace(/\s/,"_");var a=n[0],s=n[1],c=n[2],l=n[3],u=n[4];switch(s){case"int":u=parseInt(u);break;case"double":u=parseFloat(u);break;case"ColorRGB":case"Vector3D":u=I(u)}this.getPrevNode().properties[a]={type:s,type2:c,flag:l,value:u},this.setCurrentProp(this.getPrevNode().properties,a)},nodeEnd:function(){this.popStack()},isFlattenNode:function(e){return"subNodes"in e&&"properties"in e}}),Object.assign(g.prototype,{parse:function(e){var t=new y(e);t.skip(23);var r=t.getUint32();console.log("THREE.FBXLoader: FBX binary version: "+r);for(var n=new E;!this.endOfContent(t);){var i=this.parseNode(t,r);null!==i&&n.add(i.name,i)}return n},endOfContent:function(e){return e.size()%16==0?(e.getOffset()+160+16&-16)>=e.size():e.getOffset()+160+16>=e.size()},parseNode:function(e,t){var r=t>=7500?e.getUint64():e.getUint32(),n=t>=7500?e.getUint64():e.getUint32(),i=(t>=7500?e.getUint64():e.getUint32(),e.getUint8()),o=e.getString(i);if(0===r)return null;for(var a=[],s=0;s<n;s++)a.push(this.parseProperty(e));var c=a.length>0?a[0]:"",l=a.length>1?a[1]:"",u=a.length>2?a[2]:"",f={},p={},h=!1;for(1===n&&e.getOffset()===r&&(h=!0);r>e.getOffset();){var d=this.parseNode(e,t);if(null!==d)if(!0!==d.singleProperty)if("Connections"!==o||"C"!==d.name)if(d.name.match(/^Properties\d+$/))for(var m=Object.keys(d.properties),s=0,v=m.length;s<v;s++){var g=m[s];p[g]=d.properties[g]}else if(o.match(/^Properties\d+$/)&&"P"===d.name){var y,E=d.propertyList[0],b=d.propertyList[1],T=d.propertyList[2],I=d.propertyList[3];0===E.indexOf("Lcl ")&&(E=E.replace("Lcl ","Lcl_")),0===b.indexOf("Lcl ")&&(b=b.replace("Lcl ","Lcl_")),y="ColorRGB"===b||"Vector"===b||"Vector3D"===b||0===b.indexOf("Lcl_")?[d.propertyList[4],d.propertyList[5],d.propertyList[6]]:d.propertyList[4],0===b.indexOf("Lcl_")&&(y=y.toString()),p[E]={type:b,type2:T,flag:I,value:y}}else void 0===f[d.name]?"number"==typeof d.id?(f[d.name]={},f[d.name][d.id]=d):f[d.name]=d:""===d.id?(Array.isArray(f[d.name])||(f[d.name]=[f[d.name]]),f[d.name].push(d)):void 0===f[d.name][d.id]?f[d.name][d.id]=d:(Array.isArray(f[d.name][d.id])||(f[d.name][d.id]=[f[d.name][d.id]]),f[d.name][d.id].push(d));else{for(var w=[],s=1,v=d.propertyList.length;s<v;s++)w[s-1]=d.propertyList[s];void 0===p.connections&&(p.connections=[]),p.connections.push(w)}else{var R=d.propertyList[0];Array.isArray(R)?(d.properties[d.name]=d.propertyList[0],f[d.name]=d,d.properties.a=R.toString()):p[d.name]=R}}return{singleProperty:h,id:c,attrName:l,attrType:u,name:o,properties:p,propertyList:a,subNodes:f}},parseProperty:function(e){var t=e.getChar();switch(t){case"F":return e.getFloat32();case"D":return e.getFloat64();case"L":return e.getInt64();case"I":return e.getInt32();case"Y":return e.getInt16();case"C":return e.getBoolean();case"f":case"d":case"l":case"i":case"b":var r=e.getUint32(),n=e.getUint32(),i=e.getUint32();if(0===n)switch(t){case"f":return e.getFloat32Array(r);case"d":return e.getFloat64Array(r);case"l":return e.getInt64Array(r);case"i":return e.getInt32Array(r);case"b":return e.getBooleanArray(r)}if(void 0===window.Zlib)throw new Error("THREE.FBXLoader: External library Inflate.min.js required, obtain or import from https://github.com/imaya/zlib.js");var o=new y(new Zlib.Inflate(new Uint8Array(e.getArrayBuffer(i))).decompress().buffer);switch(t){case"f":return o.getFloat32Array(r);case"d":return o.getFloat64Array(r);case"l":return o.getInt64Array(r);case"i":return o.getInt32Array(r);case"b":return o.getBooleanArray(r)}case"S":a=e.getUint32();return e.getString(a);case"R":var a=e.getUint32();return e.getArrayBuffer(a);default:throw new Error("THREE.FBXLoader: Unknown property type "+t)}}}),Object.assign(y.prototype,{getOffset:function(){return this.offset},size:function(){return this.dv.buffer.byteLength},skip:function(e){this.offset+=e},getBoolean:function(){return 1==(1&this.getUint8())},getBooleanArray:function(e){for(var t=[],r=0;r<e;r++)t.push(this.getBoolean());return t},getInt8:function(){var e=this.dv.getInt8(this.offset);return this.offset+=1,e},getInt8Array:function(e){for(var t=[],r=0;r<e;r++)t.push(this.getInt8());return t},getUint8:function(){var e=this.dv.getUint8(this.offset);return this.offset+=1,e},getUint8Array:function(e){for(var t=[],r=0;r<e;r++)t.push(this.getUint8());return t},getInt16:function(){var e=this.dv.getInt16(this.offset,this.littleEndian);return this.offset+=2,e},getInt16Array:function(e){for(var t=[],r=0;r<e;r++)t.push(this.getInt16());return t},getUint16:function(){var e=this.dv.getUint16(this.offset,this.littleEndian);return this.offset+=2,e},getUint16Array:function(e){for(var t=[],r=0;r<e;r++)t.push(this.getUint16());return t},getInt32:function(){var e=this.dv.getInt32(this.offset,this.littleEndian);return this.offset+=4,e},getInt32Array:function(e){for(var t=[],r=0;r<e;r++)t.push(this.getInt32());return t},getUint32:function(){var e=this.dv.getUint32(this.offset,this.littleEndian);return this.offset+=4,e},getUint32Array:function(e){for(var t=[],r=0;r<e;r++)t.push(this.getUint32());return t},getInt64:function(){var e,t;return this.littleEndian?(e=this.getUint32(),t=this.getUint32()):(t=this.getUint32(),e=this.getUint32()),2147483648&t?(t=4294967295&~t,4294967295===(e=4294967295&~e)&&(t=t+1&4294967295),e=e+1&4294967295,-(4294967296*t+e)):4294967296*t+e},getInt64Array:function(e){for(var t=[],r=0;r<e;r++)t.push(this.getInt64());return t},getUint64:function(){var e,t;return this.littleEndian?(e=this.getUint32(),t=this.getUint32()):(t=this.getUint32(),e=this.getUint32()),4294967296*t+e},getUint64Array:function(e){for(var t=[],r=0;r<e;r++)t.push(this.getUint64());return t},getFloat32:function(){var e=this.dv.getFloat32(this.offset,this.littleEndian);return this.offset+=4,e},getFloat32Array:function(e){for(var t=[],r=0;r<e;r++)t.push(this.getFloat32());return t},getFloat64:function(){var e=this.dv.getFloat64(this.offset,this.littleEndian);return this.offset+=8,e},getFloat64Array:function(e){for(var t=[],r=0;r<e;r++)t.push(this.getFloat64());return t},getArrayBuffer:function(e){var t=this.dv.buffer.slice(this.offset,this.offset+e);return this.offset+=e,t},getChar:function(){return String.fromCharCode(this.getUint8())},getString:function(e){for(var t="";e>0;){var r=this.getUint8();if(e--,0===r)break;t+=String.fromCharCode(r)}return this.skip(e),t}}),Object.assign(E.prototype,{add:function(e,t){this[e]=t},searchConnectionParent:function(e){if(void 0===this.__cache_search_connection_parent&&(this.__cache_search_connection_parent=[]),void 0!==this.__cache_search_connection_parent[e])return this.__cache_search_connection_parent[e];this.__cache_search_connection_parent[e]=[];for(var t=this.Connections.properties.connections,r=[],n=0;n<t.length;++n)if(t[n][0]==e){var i=0===t[n][1]?-1:t[n][1];r.push(i)}return r.length>0?(L(this.__cache_search_connection_parent[e],r),r):(this.__cache_search_connection_parent[e]=[-1],[-1])},searchConnectionChildren:function(e){if(void 0===this.__cache_search_connection_children&&(this.__cache_search_connection_children=[]),void 0!==this.__cache_search_connection_children[e])return this.__cache_search_connection_children[e];this.__cache_search_connection_children[e]=[];for(var t=this.Connections.properties.connections,r=[],n=0;n<t.length;++n)t[n][1]==e&&r.push(0===t[n][0]?-1:t[n][0]);return r.length>0?(L(this.__cache_search_connection_children[e],r),r):(this.__cache_search_connection_children[e]=[],[])},searchConnectionType:function(e,t){var r=e+","+t;if(void 0===this.__cache_search_connection_type&&(this.__cache_search_connection_type={}),void 0!==this.__cache_search_connection_type[r])return this.__cache_search_connection_type[r];this.__cache_search_connection_type[r]="";for(var n=this.Connections.properties.connections,i=0;i<n.length;++i)if(n[i][0]==e&&n[i][1]==t)return this.__cache_search_connection_type[r]=n[i][2],n[i][2];return this.__cache_search_connection_type[e]=null,null}});var O=Math.PI/180}()},{}],3:[function(e,t,r){t.exports=THREE.PLYLoader=function(e){this.manager=void 0!==e?e:THREE.DefaultLoadingManager,this.propertyNameMapping={}},THREE.PLYLoader.prototype={constructor:THREE.PLYLoader,load:function(e,t,r,n){var i=this,o=new THREE.XHRLoader(this.manager);o.setResponseType("arraybuffer"),o.load(e,function(e){t(i.parse(e))},r,n)},setPropertyNameMapping:function(e){this.propertyNameMapping=e},bin2str:function(e){for(var t=new Uint8Array(e),r="",n=0;n<e.byteLength;n++)r+=String.fromCharCode(t[n]);return r},isASCII:function(e){return"ascii"===this.parseHeader(this.bin2str(e)).format},parse:function(e){return e instanceof ArrayBuffer?this.isASCII(e)?this.parseASCII(this.bin2str(e)):this.parseBinary(e):this.parseASCII(e)},parseHeader:function(e){function t(e,t){var r={type:e[0]};return"list"===r.type?(r.name=e[3],r.countType=e[1],r.itemType=e[2]):r.name=e[1],r.name in t&&(r.name=t[r.name]),r}var r="",n=0,i=/ply([\s\S]*)end_header\s/.exec(e);null!==i&&(r=i[1],n=i[0].length);for(var o,a,s={comments:[],elements:[],headerLength:n},c=r.split("\n"),l=void 0,u=0;u<c.length;u++){var f=c[u];if(""!==(f=f.trim()))switch(a=f.split(/\s+/),o=a.shift(),f=a.join(" "),o){case"format":s.format=a[0],s.version=a[1];break;case"comment":s.comments.push(f);break;case"element":void 0!==l&&s.elements.push(l),(l=Object()).name=a[0],l.count=parseInt(a[1]),l.properties=[];break;case"property":l.properties.push(t(a,this.propertyNameMapping));break;default:console.log("unhandled",o,a)}}return void 0!==l&&s.elements.push(l),s},parseASCIINumber:function(e,t){switch(t){case"char":case"uchar":case"short":case"ushort":case"int":case"uint":case"int8":case"uint8":case"int16":case"uint16":case"int32":case"uint32":return parseInt(e);case"float":case"double":case"float32":case"float64":return parseFloat(e)}},parseASCIIElement:function(e,t){for(var r=t.split(/\s+/),n=Object(),i=0;i<e.length;i++)if("list"===e[i].type){for(var o=[],a=this.parseASCIINumber(r.shift(),e[i].countType),s=0;s<a;s++)o.push(this.parseASCIINumber(r.shift(),e[i].itemType));n[e[i].name]=o}else n[e[i].name]=this.parseASCIINumber(r.shift(),e[i].type);return n},parseASCII:function(e){var t,r=new THREE.Geometry,n=this.parseHeader(e),i="";null!==(t=/end_header\s([\s\S]*)$/.exec(e))&&(i=t[1]);var o=i.split("\n"),a=0,s=0;r.useColor=!1;for(var c=0;c<o.length;c++){var l=o[c];if(""!==(l=l.trim())){s>=n.elements[a].count&&(a++,s=0);var u=this.parseASCIIElement(n.elements[a].properties,l);this.handleElement(r,n.elements[a].name,u),s++}}return this.postProcess(r)},postProcess:function(e){if(e.useColor){for(var t=0;t<e.faces.length;t++)e.faces[t].vertexColors=[e.colors[e.faces[t].a],e.colors[e.faces[t].b],e.colors[e.faces[t].c]];e.elementsNeedUpdate=!0}return e.computeBoundingSphere(),e},handleElement:function(e,t,r){if("vertex"===t){if(e.vertices.push(new THREE.Vector3(r.x,r.y,r.z)),"red"in r&&"green"in r&&"blue"in r){e.useColor=!0;var n=new THREE.Color;n.setRGB(r.red/255,r.green/255,r.blue/255),e.colors.push(n)}}else if("face"===t){var i=r.vertex_indices||r.vertex_index;3===i.length?e.faces.push(new THREE.Face3(i[0],i[1],i[2])):4===i.length&&e.faces.push(new THREE.Face3(i[0],i[1],i[3]),new THREE.Face3(i[1],i[2],i[3]))}},binaryRead:function(e,t,r,n){switch(r){case"int8":case"char":return[e.getInt8(t),1];case"uint8":case"uchar":return[e.getUint8(t),1];case"int16":case"short":return[e.getInt16(t,n),2];case"uint16":case"ushort":return[e.getUint16(t,n),2];case"int32":case"int":return[e.getInt32(t,n),4];case"uint32":case"uint":return[e.getUint32(t,n),4];case"float32":case"float":return[e.getFloat32(t,n),4];case"float64":case"double":return[e.getFloat64(t,n),8]}},binaryReadElement:function(e,t,r,n){for(var i,o=Object(),a=0,s=0;s<r.length;s++)if("list"===r[s].type){var c=[],l=(i=this.binaryRead(e,t+a,r[s].countType,n))[0];a+=i[1];for(var u=0;u<l;u++)i=this.binaryRead(e,t+a,r[s].itemType,n),c.push(i[0]),a+=i[1];o[r[s].name]=c}else i=this.binaryRead(e,t+a,r[s].type,n),o[r[s].name]=i[0],a+=i[1];return[o,a]},parseBinary:function(e){for(var t,r=new THREE.Geometry,n=this.parseHeader(this.bin2str(e)),i="binary_little_endian"===n.format,o=new DataView(e,n.headerLength),a=0,s=0;s<n.elements.length;s++)for(var c=0;c<n.elements[s].count;c++){a+=(t=this.binaryReadElement(o,a,n.elements[s].properties,i))[1];var l=t[0];this.handleElement(r,n.elements[s].name,l)}return this.postProcess(r)}}},{}],4:[function(e,t,r){function n(e){const t=document.getElementById(e),r=t.parentNode;try{r&&r.removeChild(t)}catch(e){}}function i(e,t,r){return new r(function(r,i){const o=t.timeout||5e3,a="script_"+Date.now()+"_"+Math.ceil(1e5*Math.random()),s=function(e,t){var r=document.createElement("script");return r.type="text/javascript",r.async=!0,r.id=t,r.src=e,r}(e,a),c=setTimeout(function(){i(new Error("Script request to "+e+" timed out")),n(a)},o),l=function(e){clearTimeout(e)};s.addEventListener("load",function(e){r({ok:!0}),l(c),n(a)}),s.addEventListener("error",function(t){i(new Error("Script request to "+e+" failed "+t)),l(c),n(a)}),function(e){const t=document.getElementsByTagName("script")[0];t.parentNode.insertBefore(e,t)}(s)})}t.exports=function(e){return e=e||{},function(t,r){return r=r||{},i(t,r,e.Promise||Promise)}}},{}],5:[function(e,t,r){function n(e){return e.replace(/[|\\{}()[\]^$+*?.]/g,"\\$&")}var i={once:THREE.LoopOnce,repeat:THREE.LoopRepeat,pingpong:THREE.LoopPingPong};t.exports={schema:{clip:{default:"*"},duration:{default:0},crossFadeDuration:{default:0},loop:{default:"repeat",oneOf:Object.keys(i)},repetitions:{default:1/0,min:0}},init:function(){this.model=null,this.mixer=null,this.activeActions=[];var e=this.el.getObject3D("mesh");e?this.load(e):this.el.addEventListener("model-loaded",function(e){this.load(e.detail.model)}.bind(this))},load:function(e){var t=this.el;this.model=e,this.mixer=new THREE.AnimationMixer(e),this.mixer.addEventListener("loop",function(e){t.emit("animation-loop",{action:e.action,loopDelta:e.loopDelta})}.bind(this)),this.mixer.addEventListener("finished",function(e){t.emit("animation-finished",{action:e.action,direction:e.direction})}.bind(this)),this.data.clip&&this.update({})},remove:function(){this.mixer&&this.mixer.stopAllAction()},update:function(e){e&&(this.stopAction(),this.data.clip&&this.playAction())},stopAction:function(){for(var e=this.data,t=0;t<this.activeActions.length;t++)e.crossFadeDuration?this.activeActions[t].fadeOut(e.crossFadeDuration):this.activeActions[t].stop();this.activeActions.length=0},playAction:function(){if(this.mixer){var e=this.model,t=this.data,r=e.animations||(e.geometry||{}).animations||[];if(r.length)for(var o,a=function(e){return new RegExp("^"+e.split(/\*+/).map(n).join(".*")+"$")}(t.clip),s=0;o=r[s];s++)if(o.name.match(a)){var c=this.mixer.clipAction(o,e);c.enabled=!0,t.duration&&c.setDuration(t.duration),c.setLoop(i[t.loop],t.repetitions).fadeIn(t.crossFadeDuration).play(),this.activeActions.push(c)}}},tick:function(e,t){this.mixer&&!isNaN(t)&&this.mixer.update(t/1e3)}}},{}],6:[function(e,t,r){THREE.FBXLoader=e("../../lib/FBXLoader"),t.exports={schema:{src:{type:"asset"},crossorigin:{default:""}},init:function(){this.model=null},update:function(){var e,t=this.data;t.src&&(this.remove(),e=new THREE.FBXLoader,t.crossorigin&&e.setCrossOrigin(t.crossorigin),e.load(t.src,this.load.bind(this)))},load:function(e){this.model=e,this.el.setObject3D("mesh",e),this.el.emit("model-loaded",{format:"fbx",model:e})},remove:function(){this.model&&this.el.removeObject3D("mesh")}}},{"../../lib/FBXLoader":2}],7:[function(e,t,r){var n=e("../../lib/fetch-script")();t.exports={schema:{type:"model"},init:function(){this.model=null,this.loader=null,this.loaderPromise=i().then(function(){this.loader=new THREE.GLTFLoader,this.loader.setCrossOrigin("Anonymous")}.bind(this))},update:function(){var e=this,t=this.el,r=this.data;r&&(this.remove(),this.loaderPromise.then(function(){this.loader.load(r,function(r){e.model=r.scene,e.model.animations=r.animations,t.setObject3D("mesh",e.model),t.emit("model-loaded",{format:"gltf",model:e.model})})}.bind(this)))},remove:function(){this.model&&this.el.removeObject3D("mesh")}};var i=function(){var e;return function(){return e=e||n("https://rawgit.com/mrdoob/three.js/r86/examples/js/loaders/GLTFLoader.js")}}()},{"../../lib/fetch-script":4}],8:[function(e,t,r){t.exports={"animation-mixer":e("./animation-mixer"),"fbx-model":e("./fbx-model"),"gltf-model-legacy":e("./gltf-model-legacy"),"json-model":e("./json-model"),"object-model":e("./object-model"),"ply-model":e("./ply-model"),registerAll:function(e){this._registered||((e=e||window.AFRAME).components["animation-mixer"]||e.registerComponent("animation-mixer",this["animation-mixer"]),e.systems["ply-model"]||e.registerSystem("ply-model",this["ply-model"].System),e.components["ply-model"]||e.registerComponent("ply-model",this["ply-model"].Component),e.components["fbx-model"]||e.registerComponent("fbx-model",this["fbx-model"]),e.components["gltf-model-legacy"]||e.registerComponent("gltf-model-legacy",this["gltf-model-legacy"]),e.components["json-model"]||e.registerComponent("json-model",this["json-model"]),e.components["object-model"]||e.registerComponent("object-model",this["object-model"]),this._registered=!0)}}},{"./animation-mixer":5,"./fbx-model":6,"./gltf-model-legacy":7,"./json-model":9,"./object-model":10,"./ply-model":11}],9:[function(e,t,r){t.exports={schema:{src:{type:"asset"},crossorigin:{default:""}},init:function(){this.model=null},update:function(){var e,t=this.data;t.src&&(this.remove(),e=new THREE.JSONLoader,t.crossorigin&&(e.crossOrigin=t.crossorigin),e.load(t.src,function(e,t){t.forEach(function(t){t.vertexColors=(e.faces[0]||{}).color?THREE.FaceColors:THREE.NoColors,t.skinning=!!(e.bones||[]).length,t.morphTargets=!!(e.morphTargets||[]).length,t.morphNormals=!!(e.morphNormals||[]).length});var r=(e.bones||[]).length?new THREE.SkinnedMesh(e,new THREE.MultiMaterial(t)):new THREE.Mesh(e,new THREE.MultiMaterial(t));this.load(r)}.bind(this)))},load:function(e){this.model=e,this.el.setObject3D("mesh",e),this.el.emit("model-loaded",{format:"json",model:e})},remove:function(){this.model&&this.el.removeObject3D("mesh")}}},{}],10:[function(e,t,r){t.exports={schema:{src:{type:"asset"},crossorigin:{default:""}},init:function(){this.model=null},update:function(){var e,t=this.data;t.src&&(this.remove(),e=new THREE.ObjectLoader,t.crossorigin&&e.setCrossOrigin(t.crossorigin),e.load(t.src,function(e){e.traverse(function(e){e instanceof THREE.SkinnedMesh&&e.material&&(e.material.skinning=!!(e.geometry&&e.geometry.bones||[]).length)}),this.load(e)}.bind(this)))},load:function(e){this.model=e,this.el.setObject3D("mesh",e),this.el.emit("model-loaded",{format:"json",model:e})},remove:function(){this.model&&this.el.removeObject3D("mesh")}}},{}],11:[function(e,t,r){THREE.PLYLoader=e("../../lib/PLYLoader"),t.exports.System={init:function(){this.cache={}},getOrLoadGeometry:function(e,t){var r=this.cache,n=r[e];return!t&&n?n:(r[e]=new Promise(function(t){(new THREE.PLYLoader).load(e,function(e){t(e)})}),r[e])}},t.exports.Component={schema:{skipCache:{type:"boolean",default:!1},src:{type:"asset"}},init:function(){this.model=null},update:function(){var e=this.data,t=this.el;e.src?this.system.getOrLoadGeometry(e.src,e.skipCache).then(function(e){var r=function(e){return new THREE.Mesh(e,new THREE.MeshPhongMaterial({color:16777215,shading:THREE.FlatShading,vertexColors:THREE.VertexColors,shininess:0}))}(e);t.setObject3D("mesh",r),t.emit("model-loaded",{format:"ply",model:r})}):console.warn("[%s] `src` property is required.",this.name)},remove:function(){this.model&&this.el.removeObject3D("mesh")}}},{"../../lib/PLYLoader":3}]},{},[1]);