Three.js 完全冻结 Chrome,GLTF 模型中的巨大纹理
Three.js freezes Chrome completely, huge texture in GLTF model
我想加载一个只有几个多边形 (~250) 和大小为 10,000 x 5,500 像素的巨大纹理的可笑二进制 glTF 对象。该文件的大小“只有”20MB。
当我使用 Three.js 加载它时,Chrome 整个挂起将近 15 秒。在分析器中查看时,冻结期间几乎没有任何事情发生。
如果你想自己加载文件,你可以在https://phychi.com/uni/threejs/models/freezing-monster.glb, and the whole scene can be visited at https://phychi.com/uni/threejs/下载它(直到我找到解决方案或放弃)。
行为保持不变,无论我调用 GLTFLoader.load()、GLTFLoader.loadAsync(),还是创建我自己的 Promise,然后调用 .then(addToScene),没有任何等待。
有人有妙招吗?或者如果没有,我怎样才能更有效地分析它,看到内部电话?或者我应该只为 Chrome/Three.js 打开错误报告?
PS:Windows 10 个人版,锐龙 5 2600,32 GB 内存,RX 580 8GB。
该问题应该通过将库升级到 r135
(当前版本)来解决。
版本 r133
和 r134
在使用 sRGB 编码纹理时引入了 Windows 的性能回归。
我想加载一个只有几个多边形 (~250) 和大小为 10,000 x 5,500 像素的巨大纹理的可笑二进制 glTF 对象。该文件的大小“只有”20MB。
当我使用 Three.js 加载它时,Chrome 整个挂起将近 15 秒。在分析器中查看时,冻结期间几乎没有任何事情发生。
如果你想自己加载文件,你可以在https://phychi.com/uni/threejs/models/freezing-monster.glb, and the whole scene can be visited at https://phychi.com/uni/threejs/下载它(直到我找到解决方案或放弃)。
行为保持不变,无论我调用 GLTFLoader.load()、GLTFLoader.loadAsync(),还是创建我自己的 Promise,然后调用 .then(addToScene),没有任何等待。
有人有妙招吗?或者如果没有,我怎样才能更有效地分析它,看到内部电话?或者我应该只为 Chrome/Three.js 打开错误报告?
PS:Windows 10 个人版,锐龙 5 2600,32 GB 内存,RX 580 8GB。
该问题应该通过将库升级到 r135
(当前版本)来解决。
版本 r133
和 r134
在使用 sRGB 编码纹理时引入了 Windows 的性能回归。