2016-08-08 35 views
0

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. enter image description here

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).

+0

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) –

+0

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

Antwort

-1

Wenn die Anzahl der Dateien nicht sehr groß ist: Ändere den Inhalt der mtl-Datei, mache 'tga' zu 'jpg', dann benutze ich photoshop, um jede tga-Datei zur jpg-Datei zu machen.

0

Sie müssen den TGALoader verwenden, um .tga-Dateien zu laden. Sie können es here finden.

Siehe die webgl_materials_texture_tga Quelle für ein Beispiel.

Gibt es einen Grund, warum Sie eine .tga-Textur anstelle von .png verwenden? Für die meisten Zwecke geben sie identische Ergebnisse, und .png ist im Allgemeinen kleiner und kann vom Browser nativ dekodiert werden, sodass Sie eine bessere Leistung erhalten.