gpt4 book ai didi

three.js - 导入 Zip 文件

转载 作者:行者123 更新时间:2023-12-02 01:02:30 25 4
gpt4 key购买 nike

我正在使用 OBJ 格式,但 OBJ 太重无法下载,因此,我想以 Zip 格式上传 OBJ 文件,然后,查看器将其解压缩并调用函数 OBJLoader。你知道最好的方法是什么吗?谢谢,拉法

最佳答案

问题解决者:

1) 将 jszip 脚本添加到您的页面2) 转到 OBJMTLLoader.js(大约第 33 行)并将这 10 行放在 loader.load 函数中以解压缩 zip(假设 file.zip 仅包含 file.obj)

loader.load( url, function ( text ) { 


if (url.split('/').pop().split('.')[1] == 'zip'){
//- Uncompress url e.g. http:// .... / PTERO.zip -> PTERO.obj -

// zip should contain only one file !

// uncompression object
var new_zip = new JSZip();

// uncompress
new_zip.load(text);

// the single file name convention
filename = url.split('/').pop().split('.')[0] + ".obj";

// get the file content as text
text = new_zip.file(filename).asText();
}
//--------------------------------------------

var object = scope.parse( text );

3) 在 Three.js 的 XHRLoader 中添加这两行,以便在扩展名为 zip 时加载二进制文件:

 THREE.XHRLoader.prototype = {

constructor: THREE.XHRLoader,

load: function ( url, onLoad, onProgress, onError ) {

var scope = this;

var cached = scope.cache.get( url );

if ( cached !== undefined ) {

if ( onLoad ) onLoad( cached );
return;

}

var request = new XMLHttpRequest();
request.open( 'GET', url, true );


// ---------- for zipped obj ------------
if ( url.split('.').pop() == 'zip')
request.responseType = "arraybuffer";
//--------------------------------------

request.addEventListener( 'load', function ( event ) {

scope.cache.add( url, this.response );

...

关于three.js - 导入 Zip 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26874529/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com