Ich habe einen Export von einigen .obj
Dateien und entsprechenden .mtl
Dateien. Texturen sind in .tga
Format im selben Ordner.three.js: MTLLoader lädt keine tga Texturen
Hier ist der Code, den ich meine alle .obj
zu laden verwenden, um:
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);
});
}
Das Auto geladen wird, aber nicht die Texturen. Es erscheint alles weiß und es gibt keinen Fehler in der Konsole. Ich habe versucht,
mtlLoader.setTexturePath(modelPath);
hinzuzufügen, aber es hat nichts geändert.
Ich habe auch versucht
THREE.Loader.Handlers.add(/\.tga$/i, new THREE.TGALoader());
hinzufügen, bevor addCar
Funktion aufzurufen. Wenn ich das mache, erscheint eine Warnung in der Konsole, aber die Textur erscheint immer noch nicht.
In allen Beispielen, die ich sah, sind Texturen automatisch geladen, wenn OBJLoader und MTLLoader, aber ich habe kein Beispiel OBJLoader und MTLLoader mit TGA Texturen. Ich frage mich, ob es etwas zu tun gibt, damit es funktioniert.
Jede Hilfe wäre willkommen.
PS: Die Dateien (.obj
, .mtl
und .tga
) werden von 3D max exportiert).
Mögliches Duplikat von [WebGL-Importmodellen mit dem OBJMTLoader in three.js schlägt fehl] (http://stackoverflow.com/questions/19401151/webgl-importing-model-user-the-objmtloader-in-three-js- fehlgeschlagen) –
MTLLoader verwendet die TextureLoader-Klasse zum Laden der Bilder, wobei afaik keine TGA-Bilder unterstützt (was auch erklärt, warum es eine bestimmte Klasse zum Laden von TGA-Bildern gibt) – 2pha