我在Three.js中加載.obj模型,然後從其面上創建獨立的網格以獲得真正有趣的動畫。但是,這個問題是一個非常糟糕的表現,如此多的網格。Three.js使用10000個網格進行性能優化
實際上,單面網面10000面的效果很好。但是分離的10000個網格(從這些面創建)效果很差 - 即使沒有動畫,也只是靜態場景。
如何通過保存此類動畫來優化性能?
鏈接:http://intelligence-group.ru/test.html
這裏是代碼創建網格:
` obj_loader.load(
'/assets/models/zeus.obj',
function(object) {
var material = new THREE.MeshPhongMaterial({
color: "#eeeeee",
shading: THREE.FlatShading,
metalness: 0,
roughness: 0.5,
refractionRatio: 0.25
});
var face = new THREE.Face3(0, 1, 2);
for (var i = 0; i < object.children.length; i++) {
var child = object.children[i];
var geometry = new THREE.Geometry().fromBufferGeometry(child.geometry);
for (var i = 0; i < geometry.faces.length; i++) {
var new_geometry = new THREE.Geometry();
var a = geometry.faces[i].a;
var b = geometry.faces[i].b;
var c = geometry.faces[i].c;
new_geometry.vertices.push(geometry.vertices[a]);
new_geometry.vertices.push(geometry.vertices[b]);
new_geometry.vertices.push(geometry.vertices[c]);
new_geometry.faces.push(face);
new_geometry.computeFaceNormals();
var mesh = new THREE.Mesh(new_geometry, material);
group.add(mesh);
}
full_orig_array(group); //animation function - not the reason of bad optimization!
}
scene.add(group);
}
);`
重要:動畫完成後我代替10個000齧合一個單目(從裝載機原始對象) - 然後你可以看到性能的大幅提升。這不是關於動畫 - 我檢查過它:即使沒有動畫,10000個網格也有相同的不良表現。
據我所知,它是關於每個網格中不同的幾何形狀。但我不知道如何解決這個問題(
請考慮,我不重複的幾何圖形 - !每個網格的形狀都是獨一無二的也就是這個問題
看看https://threejs.org/examples/?q=buffer#webgl_buffergeometry_instancing – gaitat
[如何優化three.js中許多sphereGeometry的渲染?](https://stackoverflow.com/問題/ 22028288 /如何對優化渲染-的一對多-spheregeometry,在三-JS) –