嘉禾二期设备管理
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

1 line
41 KiB

THREE.FBXLoader=function(){var e,t,r;function a(e){THREE.Loader.call(this,e)}function n(e,t){this.textureLoader=e,this.manager=t,this.imageNum=0,this.loadTextureCount=0,this.onLoad=null}function i(){}function o(){}function s(){}function u(){}function l(e,t){this.dv=new DataView(e),this.offset=0,this.littleEndian=void 0===t||t}function c(){}function p(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 h(e){return e/46186158e3}a.prototype=Object.assign(Object.create(THREE.Loader.prototype),{constructor:a,load:function(e,t,r,a){var n=this,i=""===n.path?THREE.LoaderUtils.extractUrlBase(e):n.path,o=new THREE.FileLoader(this.manager);o.setPath(n.path),o.setResponseType("arraybuffer"),o.setRequestHeader(n.requestHeader),o.setWithCredentials(n.withCredentials),o.load(e,(function(r){try{n.parse(r,i,t)}catch(t){a?a(t):console.error(t),n.manager.itemError(e)}}),r,a)},parse:function(t,r,a){if(l="Kaydara FBX Binary \0",(o=t).byteLength>=l.length&&l===T(o,0,l.length))e=(new u).parse(t);else{var i=T(t);if(!function(e){var t=["K","a","y","d","a","r","a","\\","F","B","X","\\","B","i","n","a","r","y","\\","\\"],r=0;function a(t){var a=e[t-1];return e=e.slice(r+t),r++,a}for(var n=0;n<t.length;++n){if(a(1)===t[n])return!1}return!0}(i))throw new Error("THREE.FBXLoader: Unknown format.");if(p(i)<7e3)throw new Error("THREE.FBXLoader: FBX version not supported, FileVersion: "+p(i));e=(new s).parse(i)}var o,l;return new n(new THREE.TextureLoader(this.manager).setPath(this.resourcePath||r).setCrossOrigin(this.crossOrigin),this.manager).parse(e,a)}}),n.prototype={constructor:n,parse:function(e,r){t=this.parseConnections(),this.onLoad=r;var a=this.parseImages();0==this.imageNum?this.onLoadTexture():this.parseTextures(a)},onLoadTexture:function(){if(this.loadTextureCount++,this.loadTextureCount>=this.imageNum){var e=this.parseMaterials(this.textures),t=this.parseDeformers(),a=(new i).parse(t);this.parseScene(t,a,e),this.onLoad&&this.onLoad(r)}},parseConnections:function(){var t=new Map;"Connections"in e&&e.Connections.connections.forEach((function(e){var r=e[0],a=e[1],n=e[2];t.has(r)||t.set(r,{parents:[],children:[]});var i={ID:a,relationship:n};t.get(r).parents.push(i),t.has(a)||t.set(a,{parents:[],children:[]});var o={ID:r,relationship:n};t.get(a).children.push(o)}));return t},parseImages:function(){var t={},r={};if(this.imageNum=0,"Video"in e.Objects){var a=e.Objects.Video;for(var n in a){var i=a[n];if(t[l=parseInt(n)]=i.RelativeFilename||i.Filename,this.imageNum++,"Content"in i){var o=i.Content instanceof ArrayBuffer&&i.Content.byteLength>0,s="string"==typeof i.Content&&""!==i.Content;if(o||s){var u=this.parseImage(a[n]);r[i.RelativeFilename||i.Filename]=u}}}}for(var l in t){var c=t[l];void 0!==r[c]?t[l]=r[c]:t[l]=t[l].split("\\").pop()}return t},parseImage:function(e){var t,r=e.Content,a=e.RelativeFilename||e.Filename,n=a.slice(a.lastIndexOf(".")+1).toLowerCase();switch(n){case"bmp":t="image/bmp";break;case"jpg":case"jpeg":t="image/jpeg";break;case"png":t="image/png";break;case"tif":t="image/tiff";break;case"tga":null===this.manager.getHandler(".tga")&&console.warn("FBXLoader: TGA loader not found, skipping ",a),t="image/tga";break;default:return void console.warn('FBXLoader: Image type "'+n+'" is not supported.')}if("string"==typeof r)return"data:"+t+";base64,"+r;var i=new Uint8Array(r);return window.URL.createObjectURL(new Blob([i],{type:t}))},parseTextures:function(t){if(this.textures=new Map,"Texture"in e.Objects){var r=e.Objects.Texture;for(var a in r){var n=this.parseTexture(r[a],t);this.textures.set(parseInt(a),n)}}return this.textures},parseTexture:function(e,t){var r=this.loadTexture(e,t);r.ID=e.id,r.name=e.attrName;var a=e.WrapModeU,n=e.WrapModeV,i=void 0!==a?a.value:0,o=void 0!==n?n.value:0;if(r.wrapS=0===i?THREE.RepeatWrapping:THREE.ClampToEdgeWrapping,r.wrapT=0===o?THREE.RepeatWrapping:THREE.ClampToEdgeWrapping,"Scaling"in e){var s=e.Scaling.value;r.repeat.x=s[0],r.repeat.y=s[1]}return r},loadTexture:function(e,r){var a,n