在Three.js中导出网格会提高性能吗

Will Exporting Meshes in Three.js Improve Performance?

本文关键字:高性能 网格 Three js      更新时间:2023-09-26

所以我正在做一个Three.js项目,这个程序在某些地方似乎滞后了。具体来说,当渲染我创建的文本网格时,性能滞后最严重:

var text1Geo = new THREE.TextGeometry("Hello", {font: font});
text1Mesh = new THREE.Mesh(text1Geo, textMaterial);
text1Mesh.position.set(-6500, 150, -500);
text1Mesh.castShadow = true;
scene.add(text1Mesh);

我想知道如果我使用OBJExporter将文本导出为obj,而不是创建一个THREE,是否会提高性能。TextGeometry我可以使用OBJLoader将网格加载到场景中。这会提高性能吗。如果你想查看整个项目和源代码,请点击此处。任何其他关于如何提高绩效的提示或建议都将不胜感激。谢谢

否。

实验仍在进行中,但答案是缓存文本几何体

而不是像一样

loadText( 'url.obj' , (t)=>{ /*...do stuff...*/});

你可以有

computeText(){ 
  var t = new THREE.TextGeometry();
  ...
}
computeText();
//...do stuff...

我的假设是,obj在解析时是不友好的,但我可能错了。格式化的json可能更好,或者是二进制的。

因此,与其下载.obj,解析它,索引,然后做一些事情,不如在开始渲染之前计算它。

尽管如此,当这个东西到达gpu时,无论是计算的还是下载的,你很可能会经历滞后。