J'ai exporté des fichiers .obj
et les fichiers .mtl
correspondants. Les textures sont au format .tga
dans le même dossier.three.js: MTLLoader ne charge pas les textures tga
Voici le code que j'utilise pour charger tous mes .obj
:
function addCar(modelPath, modelName) {
var mtlLoader = new THREE.MTLLoader();
mtlLoader.setPath(modelPath);
for (var i = 0; i <= 2; i++) {
loadObject(mtlLoader, modelPath, modelName, i);
}
}
function loadObject(loader, path, name, i) {
var objectName = name + i + '.obj';
loader.load(name + i + '.mtl', function (materials) {
materials.preload();
var objLoader = new THREE.OBJLoader();
objLoader.setMaterials(materials);
objLoader.setPath(path);
objLoader.load(objectName, function (object) {
scene.add(object);
}, function (xhr) {
onProgress(xhr, objectName)
}, onError);
});
}
La voiture est chargée, mais pas les textures. Il semble tout blanc, et il n'y a pas d'erreur dans la console. J'ai essayé d'ajouter
mtlLoader.setTexturePath(modelPath);
mais cela n'a rien changé.
J'ai essayé aussi d'ajouter
THREE.Loader.Handlers.add(/\.tga$/i, new THREE.TGALoader());
avant d'appeler addCar
fonction. Lorsque je fais cela, un avertissement apparaît dans la console, mais la texture n'apparaît toujours pas. Dans tous les exemples que j'ai vus, les textures sont chargées automatiquement quand j'utilise OBJLoader et MTLLoader, mais je n'ai pas utilisé d'exemple avec OBJLoader et MTLLoader avec des textures TGA. Je me demande donc s'il y a quelque chose à faire pour que cela fonctionne.
Toute aide serait appréciée. PS: les fichiers (.obj
, .mtl
et .tga
) sont exportés de 3D max).
La duplication possible de [modèles d'importation WebGL utilisant le OBJMTLoader dans three.js échoue] (http://stackoverflow.com/questions/19401151/webgl-importing-models-using-the-objmtloader-in-three-js- échoue) –
MTLLoader utilise la classe TextureLoader pour charger les images, ce qui ne supporte pas les images TGA (ce qui explique aussi pourquoi il existe une classe spécifique pour charger les images TGA) – 2pha