我有一个应该使用WebGL呈现的大约108000个三角形的网格。高性能WebGL框架
目前我没有使用框架,只是纯粹的WebGL。我已经通过id映射实现了对象识别功能以及基本的相机操作器。
现在我想切换到WebGL框架的维护问题。
我已经尝试Three.js,但它是减慢大网格。你知道一个适合大网格的WebGL框架吗?
编辑:
我尝试呈现近10000立方节点树图,并希望做每一个选择(总的目标是10万个立方)。
下面是函数,是建立现场:
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)下急剧下降。所以我想我通过了一些数组大小。
谢谢,我编辑了我的问题。 – 2012-03-06 09:20:44