将大型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/)
。 我试着用JSONStream
把JSONStream
捆绑到我的代码中。 但是, fs
不能被浏览。
这是我的问题:
- 使用stream最好的方式来加载three.js中的极大的JSON模型? 如果不是,那么更好的解决scheme是什么?
-
fs
可以被浏览。 或者我可以用其他方式在浏览器中创build可读的stream?
谢谢你回答我的问题。
- 在节点package.json中,使用额外的参数从另一个脚本调用脚本,在这种情况下添加mocha观察器
- ExpressJS POST不能logging正文
- require.js POST请求察觉networkingAPI返回“错误parsingJSON”
- JavaScript的:如何加载JSON对象作为一个文件没有jQuery或AJAX?
- 从远程服务器获取JSON文件(包含希伯来语值)并在Node.js中parsing它
- 正确的方式来存储,检索,使用sqlite3,nodejs从数据库parsingJSON对象
- 为什么JSON.parse会阻塞nodejs中的编码字符?
- 使用pipe道节点请求阻止交换机api上的504网关超时
- 在NodeJs中读取JSON文件