【发布时间】:2015-12-26 15:18:10
【问题描述】:
我需要使用一个尺寸为 1x1x1 的立方体构建地形,坐标在 .txt 文件中提供,大约有 1100 万个三元组。
问题是,使用我当前的代码我只能绘制大约 60k 个,然后浏览器选项卡被重置,并提示停止无响应的脚本,所以我使用了太多的内存和时间来生成它们。
这是我用来绘制它们的代码块:
function generateCubes(data) {
var cubeGeometry = new THREE.CubeGeometry(cubeSize, cubeSize, cubeSize);
var material = new THREE.MeshLambertMaterial({color: 0x587058});
var mesh = new THREE.Mesh(cubeGeometry, material);
var mergedGeo = new THREE.Geometry();
var instance;
var line = data[0].split(';');
var translateX = line[0], translateY = line[1], translateZ = line[2];
//var group = new THREE.Object3d();
for(var i = 0; i < 100000; i++) { // should go to data.length
line = data[i].split(';');
//instance = mesh.clone();
//instance.position.set(line[0] - translateX, line[2] - translateZ, line[1] - translateY);
//group.add(instance);
mesh.position.x = Number(line[0]) - translateX;
mesh.position.y = Math.round(Number(line[2]) - translateZ);
mesh.position.z = Number(line[1]) - translateY;
mesh.updateMatrix();
mergedGeo.merge(instance.geometry, instance.matrix);
}
group = new THREE.Mesh(mergedGeo, material);
scene.add(group);
}
在 $.ajax 调用中成功调用该函数。
注释部分在没有合并几何的情况下使用,这样我可以绘制大约 100k 的数据。
谢谢你帮助我。
编辑:我看到了this question,但对我没有多大帮助。
【问题讨论】:
-
我很确定你不能用单独的绘图调用绘制 11M 对象,即使是从 C++ 中。看看instancing
标签: javascript three.js geometry