fondo
three.js carga algunos modelos 3D con imágenes de textura en la escena 3D. La entrada son archivos .obj y las imágenes de textura correspondientes. Three.js loaders OBJLoader y MTLLoader se utilizan. El código es el siguiente:
const mtlLoader = new MTLLoader();
const objLoader = new OBJLoader();
mtlLoader.load('models/' + filename + '.mtl', materials => {
materials.preload();
objLoader.setMaterials(materials);
objLoader.load('models/' + filename + '.obj', onLoad);
});
pregunta
Hay problemas de rendimiento, por lo que consideramos convertir el formato de archivo .obj a un archivo .gltf, y es necesario tener en cuenta los siguientes puntos:
1. Hay una línea en el archivo .obj que es un índice del archivo .mtl. Asegúrese de que la ruta y el nombre del archivo sean correctos.
mtllib 左边窗帘材质测试.mtl
2. El archivo .mtl contiene la relación correspondiente entre el nodo 3D del nodo especificado y el material, y la ruta y el nombre de la imagen de la textura deben ser correctos.
map_Kd textures/2046725.5b4fa11fd8869-004.jpg
solución
Instalar el paquete de terceros obj2gltf
npm install -g obj2gltf
Conversión de formato a través de la línea de comandos
obj2gltf -i model.obj -o model.gltf