我正在尝试将构建模型加载到three.js中。模型的格式是RvtVa3c生成的JSON文件,它是Revit生成JSON输出的插件。然后我使用THREE.ObjectLoader()
将模型加载到three.js中,就像这个示例json loader three.js一样。
尺寸低于100MB的型号一切都很好。当我尝试加载200MB型号时,Chrome会抛出“Aw,snap”错误页面。 Firefox会抛出分配大小溢出。因为THREE.ObjectLoader()
使用XHR一次将json文件读入String,我猜对于java脚本,String的大小是大的。 String的长度超过200,000,000,100MB JSON。
所以我正在寻找一种按流加载JSON文件的方法。 Node.js中的JSONStream
可以处理200MB的JSON。代码示例如下所示。
var fs = require('fs'),
JSONStream = require('JSONStream'),
es = require('event-stream');
var getStream = function () {
var jsonData = 'buildingModel.js',
stream = fs.createReadStream(jsonData, {encoding: 'utf8'}),
parser = JSONStream.parse('*');
return stream.pipe(parser);
};
getStream()
.pipe(es.mapSync(function (data) {
console.log(data);
}));
由于浏览器无法使用require(/module/)
。我尝试使用browserify
将JSONStream
捆绑到我的代码中。但是,fs
无法进行浏览。
以下是我的问题:
fs
是否可以浏览。或者我可以通过其他方式在浏览器中创建可读流?感谢您回答我的问题。