Three.js congela completamente Chrome, textura enorme en modelo GLTF.
Quiero cargar un objeto glTF binario ridículo con solo unos pocos polígonos (~250) y una enorme textura de tamaño 10,000 x 5,500 píxeles. El archivo tiene un tamaño de “solo” 20MB.
Cuando lo cargo utilizando Three.js, Chrome se cuelga por completo durante casi 15 segundos. Al mirar en el perfilador, prácticamente no ocurre nada durante el tiempo de congelación.
Si quieres cargar el archivo tú mismo, puedes descargarlo en https://phychi.com/uni/threejs/models/freezing-monster.glb, y toda la escena se puede visitar en https://phychi.com/uni/threejs/ (hasta que encuentre una solución o me rinda).
El comportamiento es el mismo, ya sea que llame a GLTFLoader.load(), GLTFLoader.loadAsync(), o cree mi propia Promise y llame a .then(addToScene), sin ningún await.
¿Alguien tiene una solución mágica? ¿O si no, cómo podría perfilarlo de manera más eficiente, viendo las llamadas internas? ¿O debería simplemente abrir un informe de error para Chrome/Three.js?
PD: Windows 10 Personal, Ryzen 5 2600, 32 GB de RAM, RX 580 8GB.
davy.ai
Cargando un objeto glTF grande con Three.js y google-chrome