接上一篇,项目测试,在IE11中加载模型不显示,查看console log,是对Uint8Array的解析出了问题,IE11的Uint8Array对象一些方法没有实现,打开FBXLoader.js,修改3391行的getString方法,给Uint8Array对象打个补丁:

getString: function ( size ) {

			var a = new Uint8Array( size );

			for ( var i = 0; i < size; i ++ ) {

				a[ i ] = this.getUint8();

			}
			
			if (!Uint8Array.prototype.indexOf) {
			  Uint8Array.prototype.indexOf = function(searchElement, fromIndex) {			
				var k;			
				if (this == null) {
				  throw new TypeError('"this" is null or not defined');
				}
			
				var o = Object(this);			
				var len = o.length >>> 0;
			
				// 4. If len is 0, return -1.
				if (len === 0) {
				  return -1;
				}
							
				var n = fromIndex | 0;
							
				if (n >= len) {
				  return -1;
				}
							
				while (k < len) {				  
				  if (k in o && o[k] === searchElement) {
					return k;
				  }
				  k++;
				}
				return -1;
			  };
			}
			
			if(!Uint8Array.prototype.slice){
				Uint8Array.prototype.slice = function(){
					return new Uint8Array(this).subarray(this.arguments);
				}
			};
			
			var nullByte = a.indexOf( 0 );
			if ( nullByte >= 0 ) a = a.slice( 0, nullByte );

			return THREE.LoaderUtils.decodeText( a );

		}

判断是否有indexOf和slice方法,没有就加一个。Ctrl+F5刷新,模型加载。

Three.js 0.91.0版本,模型由blender-2.93.6生成,只导出网格(Mesh)。

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐