如何将大型json模型加载到three.js项目中

时间:2016-06-12 15:23:31

标签: node.js json graphics three.js

我正在尝试将构建模型加载到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/)。我尝试使用browserifyJSONStream捆绑到我的代码中。但是,fs无法进行浏览。

以下是我的问题:

  1. 使用流是在three.js中加载极大JSON模型的最佳方法吗?如果没有,什么是更好的解决方案?
  2. fs是否可以浏览。或者我可以通过其他方式在浏览器中创建可读流?
  3. 感谢您回答我的问题。

0 个答案:

没有答案