将大型json模型加载到three.js应用程序中

我正在尝试将构build模型加载到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,我猜String的大小对于java脚本来说是很大的。 String的长度超过2亿,JSON为100MB。

所以我正在寻求通过stream加载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/) 。 我试着用JSONStreamJSONStream捆绑到我的代码中。 但是, fs不能被浏览。

这是我的问题:

  1. 使用stream最好的方式来加载three.js中的极大的JSON模型? 如果不是,那么更好的解决scheme是什么?
  2. fs可以被浏览。 或者我可以用其他方式在浏览器中创build可读的stream?

谢谢你回答我的问题。