可以在三.js的字节数组中加载图像和模型

Is is possible to load images and models from a byte array in three.js?

本文关键字:数组 加载 图像 模型 字节数 字节 js      更新时间:2023-09-26

>我知道在三个中.js我们可以使用 ImageUtils 直接从服务器加载图像,使用 JSONLoader 将模型作为.js文件加载,但是是否可以直接从字节数组加载图像和模型? (例如,下载一个压缩文件,在 JavaScript 中提取它并将字节数组直接输入加载器?

谢谢

好吧,我找到了答案。

这可以通过将我们自己的扩展方法添加到相关对象来完成。对于纹理加载,我们可以通过向 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。如果较新版本有代码更改,请将它们添加到上述方法以符合要求。