1 |
- !function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t(require("babylonjs")):"function"==typeof define&&define.amd?define("babylonjs-loaders",["babylonjs"],t):"object"==typeof exports?exports["babylonjs-loaders"]=t(require("babylonjs")):e.LOADERS=t(e.BABYLON)}("undefined"!=typeof self?self:"undefined"!=typeof global?global:this,function(e){return function(e){var t={};function r(o){if(t[o])return t[o].exports;var n=t[o]={i:o,l:!1,exports:{}};return e[o].call(n.exports,n,n.exports,r),n.l=!0,n.exports}return r.m=e,r.c=t,r.d=function(e,t,o){r.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:o})},r.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},r.t=function(e,t){if(1&t&&(e=r(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var o=Object.create(null);if(r.r(o),Object.defineProperty(o,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var n in e)r.d(o,n,function(t){return e[t]}.bind(null,n));return o},r.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return r.d(t,"a",t),t},r.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},r.p="",r(r.s=13)}({0:function(t,r){t.exports=e},13:function(e,t,r){"use strict";r.r(t),function(e){var o=r(7);r.d(t,"MTLFileLoader",function(){return o.MTLFileLoader}),r.d(t,"OBJFileLoader",function(){return o.OBJFileLoader});var n=void 0!==e?e:"undefined"!=typeof window?window:void 0;if(void 0!==n)for(var s in o)n.BABYLON[s]=o[s]}.call(this,r(3))},3:function(e,t){var r;r=function(){return this}();try{r=r||new Function("return this")()}catch(e){"object"==typeof window&&(r=window)}e.exports=r},7:function(e,t,r){"use strict";r.r(t);var o=r(0),n=function(){function e(){this.materials=[]}return e.prototype.parseMTL=function(t,r,n){if(!(r instanceof ArrayBuffer)){for(var s,i=r.split("\n"),a=/\s+/,l=null,u=0;u<i.length;u++){var p=i[u].trim();if(0!==p.length&&"#"!==p.charAt(0)){var f=p.indexOf(" "),c=f>=0?p.substring(0,f):p;c=c.toLowerCase();var d=f>=0?p.substring(f+1).trim():"";"newmtl"===c?(l&&this.materials.push(l),l=new o.StandardMaterial(d,t)):"kd"===c&&l?(s=d.split(a,3).map(parseFloat),l.diffuseColor=o.Color3.FromArray(s)):"ka"===c&&l?(s=d.split(a,3).map(parseFloat),l.ambientColor=o.Color3.FromArray(s)):"ks"===c&&l?(s=d.split(a,3).map(parseFloat),l.specularColor=o.Color3.FromArray(s)):"ke"===c&&l?(s=d.split(a,3).map(parseFloat),l.emissiveColor=o.Color3.FromArray(s)):"ns"===c&&l?l.specularPower=parseFloat(d):"d"===c&&l?l.alpha=parseFloat(d):"map_ka"===c&&l?l.ambientTexture=e._getTexture(n,d,t):"map_kd"===c&&l?l.diffuseTexture=e._getTexture(n,d,t):"map_ks"===c&&l?l.specularTexture=e._getTexture(n,d,t):"map_ns"===c||("map_bump"===c&&l?l.bumpTexture=e._getTexture(n,d,t):"map_d"===c&&l&&(l.opacityTexture=e._getTexture(n,d,t)))}}l&&this.materials.push(l)}},e._getTexture=function(e,t,r){if(!t)return null;var n=e;if("file:"===e){var s=t.lastIndexOf("\\");-1===s&&(s=t.lastIndexOf("/")),n+=s>-1?t.substr(s+1):t}else n+=t;return new o.Texture(n,r)},e}(),s=function(){function e(t){this.name="obj",this.extensions=".obj",this.obj=/^o/,this.group=/^g/,this.mtllib=/^mtllib /,this.usemtl=/^usemtl /,this.smooth=/^s /,this.vertexPattern=/v( +[\d|\.|\+|\-|e|E]+){3,7}/,this.normalPattern=/vn( +[\d|\.|\+|\-|e|E]+)( +[\d|\.|\+|\-|e|E]+)( +[\d|\.|\+|\-|e|E]+)/,this.uvPattern=/vt( +[\d|\.|\+|\-|e|E]+)( +[\d|\.|\+|\-|e|E]+)/,this.facePattern1=/f\s+(([\d]{1,}[\s]?){3,})+/,this.facePattern2=/f\s+((([\d]{1,}\/[\d]{1,}[\s]?){3,})+)/,this.facePattern3=/f\s+((([\d]{1,}\/[\d]{1,}\/[\d]{1,}[\s]?){3,})+)/,this.facePattern4=/f\s+((([\d]{1,}\/\/[\d]{1,}[\s]?){3,})+)/,this.facePattern5=/f\s+(((-[\d]{1,}\/-[\d]{1,}\/-[\d]{1,}[\s]?){3,})+)/,this._meshLoadOptions=t||e.currentMeshLoadOptions}return Object.defineProperty(e,"currentMeshLoadOptions",{get:function(){return{ComputeNormals:e.COMPUTE_NORMALS,ImportVertexColors:e.IMPORT_VERTEX_COLORS,InvertY:e.INVERT_Y,MaterialLoadingFailsSilently:e.MATERIAL_LOADING_FAILS_SILENTLY,OptimizeWithUV:e.OPTIMIZE_WITH_UV,SkipMaterials:e.SKIP_MATERIALS}},enumerable:!0,configurable:!0}),e.prototype._loadMTL=function(e,t,r,n){var s=o.Tools.BaseUrl+t+e;o.Tools.LoadFile(s,r,void 0,void 0,!1,function(e,t){n(s,t)})},e.prototype.createPlugin=function(){return new e(e.currentMeshLoadOptions)},e.prototype.canDirectLoad=function(e){return!1},e.prototype.importMeshAsync=function(e,t,r,o,n,s){return this._parseSolid(e,t,r,o).then(function(e){return{meshes:e,particleSystems:[],skeletons:[],animationGroups:[]}})},e.prototype.loadAsync=function(e,t,r,o,n){return this.importMeshAsync(null,e,t,r,o).then(function(){})},e.prototype.loadAssetContainerAsync=function(e,t,r,n,s){return this.importMeshAsync(null,e,t,r).then(function(t){var r=new o.AssetContainer(e);return t.meshes.forEach(function(e){return r.meshes.push(e)}),r.removeAllFromScene(),r})},e.prototype._parseSolid=function(e,t,r,s){for(var i,a=this,l=[],u=[],p=[],f=[],c=[],d=[],h=[],m=[],v=[],g=[],L=[],x=0,y=!1,_=[],O=[],b=[],I=[],T=[],M="",F="",A=new n,P=1,S=!0,w=new o.Color4(.5,.5,.5,1),C=function(e,t,r,o,n,s,i){var l;-1==(l=a._meshLoadOptions.OptimizeWithUV?function(e,t){e[t[0]]||(e[t[0]]={normals:[],idx:[],uv:[]});var r=e[t[0]].normals.indexOf(t[1]);return 1!=r&&t[2]==e[t[0]].uv[r]?e[t[0]].idx[r]:-1}(L,[e,r,t]):function(e,t){e[t[0]]||(e[t[0]]={normals:[],idx:[]});var r=e[t[0]].normals.indexOf(t[1]);return-1===r?-1:e[t[0]].idx[r]}(L,[e,r]))?(d.push(h.length),h.push(o),m.push(n),g.push(s),void 0!==i&&v.push(i),L[e].normals.push(r),L[e].idx.push(x++),a._meshLoadOptions.OptimizeWithUV&&L[e].uv.push(t)):d.push(l)},V=function(){for(var e=0;e<h.length;e++)_.push(h[e].x,h[e].y,h[e].z),b.push(g[e].x,g[e].y,g[e].z),I.push(m[e].x,m[e].y);!0===a._meshLoadOptions.ImportVertexColors&&O.push(v[e].r,v[e].g,v[e].b,v[e].a),h=[],g=[],m=[],v=[],L=[],x=0},E=function(e,t){t+1<e.length&&(T.push(e[0],e[t],e[t+1]),E(e,t+=1))},j=function(e,t){E(e,t);for(var r=0;r<T.length;r++){var n=parseInt(T[r])-1;C(n,0,0,l[n],o.Vector2.Zero(),o.Vector3.Up(),!0===a._meshLoadOptions.ImportVertexColors?f[n]:void 0)}T=[]},N=function(e,t){E(e,t);for(var r=0;r<T.length;r++){var n=T[r].split("/"),s=parseInt(n[0])-1,i=parseInt(n[1])-1;C(s,i,0,l[s],p[i],o.Vector3.Up(),!0===a._meshLoadOptions.ImportVertexColors?f[s]:void 0)}T=[]},R=function(e,t){E(e,t);for(var r=0;r<T.length;r++){var o=T[r].split("/"),n=parseInt(o[0])-1,s=parseInt(o[1])-1,i=parseInt(o[2])-1;C(n,s,i,l[n],p[s],u[i])}T=[]},U=function(e,t){E(e,t);for(var r=0;r<T.length;r++){var n=T[r].split("//"),s=parseInt(n[0])-1,i=parseInt(n[1])-1;C(s,1,i,l[s],o.Vector2.Zero(),u[i],!0===a._meshLoadOptions.ImportVertexColors?f[s]:void 0)}T=[]},k=function(e,t){E(e,t);for(var r=0;r<T.length;r++){var o=T[r].split("/"),n=l.length+parseInt(o[0]),s=p.length+parseInt(o[1]),i=u.length+parseInt(o[2]);C(n,s,i,l[n],p[s],u[i],!0===a._meshLoadOptions.ImportVertexColors?f[n]:void 0)}T=[]},B=function(){c.length>0&&(i=c[c.length-1],V(),d.reverse(),i.indices=d.slice(),i.positions=_.slice(),i.normals=b.slice(),i.uvs=I.slice(),!0===a._meshLoadOptions.ImportVertexColors&&(i.colors=O.slice()),d=[],_=[],O=[],b=[],I=[])},Y=r.split("\n"),W=0;W<Y.length;W++){var D,z=Y[W].trim();if(0!==z.length&&"#"!==z.charAt(0))if(this.vertexPattern.test(z))D=z.match(/[^ ]+/g),l.push(new o.Vector3(parseFloat(D[1]),parseFloat(D[2]),parseFloat(D[3]))),!0===this._meshLoadOptions.ImportVertexColors&&(D.length>=7?f.push(new o.Color4(parseFloat(D[4]),parseFloat(D[5]),parseFloat(D[6]),7===D.length||void 0===D[7]?1:parseFloat(D[7]))):f.push(w));else if(null!==(D=this.normalPattern.exec(z)))u.push(new o.Vector3(parseFloat(D[1]),parseFloat(D[2]),parseFloat(D[3])));else if(null!==(D=this.uvPattern.exec(z)))p.push(new o.Vector2(parseFloat(D[1]),parseFloat(D[2])));else if(null!==(D=this.facePattern3.exec(z)))R(D[1].trim().split(" "),1);else if(null!==(D=this.facePattern4.exec(z)))U(D[1].trim().split(" "),1);else if(null!==(D=this.facePattern5.exec(z)))k(D[1].trim().split(" "),1);else if(null!==(D=this.facePattern2.exec(z)))N(D[1].trim().split(" "),1);else if(null!==(D=this.facePattern1.exec(z)))j(D[1].trim().split(" "),1);else if(this.group.test(z)||this.obj.test(z)){var G={name:z.substring(2).trim(),indices:void 0,positions:void 0,normals:void 0,uvs:void 0,colors:void 0,materialName:""};B(),c.push(G),y=!0,S=!0,P=1}else if(this.usemtl.test(z)){if(M=z.substring(7).trim(),!S){B();G={name:"_mm"+P.toString(),indices:void 0,positions:void 0,normals:void 0,uvs:void 0,colors:void 0,materialName:M};P++,c.push(G)}y&&S&&(c[c.length-1].materialName=M,S=!1)}else this.mtllib.test(z)?F=z.substring(7).trim():this.smooth.test(z)||console.log("Unhandled expression at line : "+z)}y&&(i=c[c.length-1],d.reverse(),V(),i.indices=d,i.positions=_,i.normals=b,i.uvs=I,!0===this._meshLoadOptions.ImportVertexColors&&(i.colors=O)),y||(d.reverse(),V(),c.push({name:o.Geometry.RandomId(),indices:d,positions:_,colors:O,normals:b,uvs:I,materialName:M}));for(var Z=[],J=new Array,q=0;q<c.length;q++){if(e&&c[q].name)if(e instanceof Array){if(-1==e.indexOf(c[q].name))continue}else if(c[q].name!==e)continue;i=c[q];var H=new o.Mesh(c[q].name,t);J.push(c[q].materialName);var K=new o.VertexData;if(K.uvs=i.uvs,K.indices=i.indices,K.positions=i.positions,!0===this._meshLoadOptions.ComputeNormals){var X=new Array;o.VertexData.ComputeNormals(i.positions,i.indices,X),K.normals=X}else K.normals=i.normals;!0===this._meshLoadOptions.ImportVertexColors&&(K.colors=i.colors),K.applyToMesh(H),this._meshLoadOptions.InvertY&&(H.scaling.y*=-1),Z.push(H)}var Q=[];return""!==F&&!1===this._meshLoadOptions.SkipMaterials&&Q.push(new Promise(function(e,r){a._loadMTL(F,s,function(n){try{A.parseMTL(t,n,s);for(var i=0;i<A.materials.length;i++){for(var l,u=0,p=[];(l=J.indexOf(A.materials[i].name,u))>-1;)p.push(l),u=l+1;if(-1==l&&0==p.length)A.materials[i].dispose();else for(var f=0;f<p.length;f++)Z[p[f]].material=A.materials[i]}e()}catch(t){o.Tools.Warn("Error processing MTL file: '"+F+"'"),a._meshLoadOptions.MaterialLoadingFailsSilently?e():r(t)}},function(t,n){o.Tools.Warn("Error downloading MTL file: '"+F+"'"),a._meshLoadOptions.MaterialLoadingFailsSilently?e():r(n)})})),Promise.all(Q).then(function(){return Z})},e.OPTIMIZE_WITH_UV=!1,e.INVERT_Y=!1,e.IMPORT_VERTEX_COLORS=!1,e.COMPUTE_NORMALS=!1,e.SKIP_MATERIALS=!1,e.MATERIAL_LOADING_FAILS_SILENTLY=!0,e}();o.SceneLoader&&o.SceneLoader.RegisterPlugin(new s),r.d(t,"MTLFileLoader",function(){return n}),r.d(t,"OBJFileLoader",function(){return s})}})});
|