是否可以从three.js中的字节数组加载图像和模型?

时间:2012-06-01 01:38:12

标签: javascript three.js

我知道在three.js中我们可以使用ImageUtils直接从服务器加载图像,使用JSONLoader将模型作为.js文件加载,但是可以直接从字节数组加载图像和模型吗? (例如,下载压缩文件,在javascript中解压缩并将字节数组直接送入加载器?)

感谢

1 个答案:

答案 0 :(得分:2)

好吧,找到了答案。可以通过将我们自己的扩展方法添加到相关对象来完成。对于纹理加载,我们可以通过向imageutils添加一个新方法来加载二进制数组,如下所示:

THREE.ImageUtils.prototype.loadTextureBinary = function ( data, mapping, callback ) {

    var image = new Image(), texture = new THREE.Texture( image, mapping );

    image.onload = function () { texture.needsUpdate = true; if ( callback ) callback( this ); };
    image.crossOrigin = this.crossOrigin;
    image.src = "data:image/png;base64," + Base64.encode(data);

    return texture;

};

用于加载字符串json,提取数据并将其转换为字符串并将其传递给JSONLoader的这个新扩展方法:

THREE.JSONLoader.prototype.loadJson = function ( data, callback, texturePath ) {

    var worker, scope = this;

    texturePath = texturePath ? texturePath : this.extractUrlBase( url );

    this.onLoadStart();
    var json = JSON.parse( data );
    context.createModel( json, callback, texturePath );

};

注意:以上代码适用于three.js r49。如果较新版本的代码更改,请将它们添加到上述方法中以符合规定。