У меня есть сетка с примерно 108000 треугольников, которые должны быть визуализированы с помощью WebGL.
На данный момент я не использую фреймворк, только чистый WebGL.Я уже реализовал распознавание объектов через отображение идентификаторов для выбора с помощью функции обратного вызова, а также базового манипулятора камеры.
Теперь я хочу переключиться на WebGL-фреймворк для решения вопросов обслуживания.
Я уже пробовал Three.js, но он замедлялся для больших сеток.Знаете ли вы подходящий WebGL-фреймворк для больших сеток?
РЕДАКТИРОВАТЬ:
Я пытаюсь отобразить древовидную карту с почти 10000 узлов-кубов и хочу сделать выбор на каждом (общая цель - 100000кубы).
Вот функция, которая строит сцену:
BP2011.Treemap.prototype.buildScene = function() {
// ... [create scene, camera and lights]
var nodesParentNode = new THREE.Object3D();
scene.add(nodesParentNode);
var nodes = this._nodes;
for(var i = 0; i < nodes.length; i++) {
nodesParentNode.add(nodes[i].buildSceneObject());
}
this.threejs.nodesParentNode = nodesParentNode;
};
А вот функция, которая строит один куб:
BP2011.Treemap.Node.prototype.buildSceneObject = function( buildGeometry, buildMaterial ) {
// ...
if (buildGeometry || (self.sceneObject && self.sceneObject.geometry === undefined)) {
// ... [compute cube position and extension]
geometry = new THREE.CubeGeometry(
maxX - minX,
maxY - minY,
maxZ - minZ);
} else {
geometry = this.sceneObject.geometry;
}
mesh = new THREE.Mesh( geometry, new THREE.MeshPhongMaterial({color: 0x4444DD}));
mesh.position.x = (maxX + minX)/2;
mesh.position.y = (maxY + minY)/2;
mesh.position.z = (maxZ + minZ)/2;
// testing for performance
mesh.matrixAutoUpdate = false;
mesh.updateMatrix();
mesh.geometry.__dirtyVertices = true;
mesh.geometry.__dirtyElements = true;
// backwards reference for handling
this.sceneObject = mesh;
this.sceneObject.behaviorObject = this;
return this.sceneObject;
};
Итак, яу меня есть родительский узел с почти 10000 дочерними узлами, потому что я не знал, как делать выборку с одним объектом.
Если у вас есть какие-либо предложения, как решить эту проблему, добро пожаловать.
Я также уже взглянул на scene.js: до 4000 кубов производительность действительно хорошая, но резко падает при определенном количестве кубов (около 4100).Поэтому я думаю, что передал некоторый размер массива.