1

我试图弄清楚我看到的显着性能影响是否可以优化掉,或者这是事物的状态:

我有一个看起来像奥巴马的几何图形,它大约有 11K 个三角形,5600 个左右的面(四边形和三角形)。它在 Maya 中建模,并根据所使用的渲染方法以两种方法之一导出为 OBJ。

在一种导出方法中,我们不从 Maya 导出材质文件。我们取模型使用的 5 个不同的纹理贴图,将它们拼接成一个纹理,并在模型中重新编写 UV 以引用统一纹理中的新纹理位置。最终统一的纹理为 1024x512。

第二种导出方法确实使用了从 Maya 导出的材质文件,我们将 5 种不同的纹理减少到在所有情况下都比其他方法使用的统一纹理中的对应纹理更小。如果平铺 5 种不同的纹理,你会得到大约 768x512 的东西。

两种渲染相同几何体的方法之间的唯一其他区别是第二种方法具有 1 个半透明材质:眼睛上方的角膜(透明层)设置为 0.1(几乎不可见)透明度和略带蓝色/灰色的色调.

代替第一种渲染方法中的半透明角膜,我们只是将眼球的图像放在角膜上,这种方法永远看不到内眼(虹膜和瞳孔)。它们在那里,只是被渲染丢弃,因为它们位于不透明的角膜后面。

现在这是一个大难题:渲染方法 1 轻松达到 60 fps 并保持在两个这样的几何图形中。渲染方法 2 以每秒 20 到 25 帧的速度进行渲染。我还没有尝试使用第二个几何图形进行渲染。我对帧速率的显着降低感到有些惊讶。如果我将半透明角膜更改为不透明,则帧速率仍然很差(相同速率)。

两种方法都使用 THREE.JSONLoader。渲染方法 1 使用单个 MeshLambertMaterial,渲染方法 2 使用 meshFaceMaterial 和 6 个材质的数组。

使用多种材质和多种纹理会有这么大的影响吗?人们在更复杂的环境中做什么,需要比我微不足道的 6 倍多的材料?

4

0 回答 0