2013-07-11 11 views
5

Ich habe eine .obj-Datei (zusammen mit .mtl und a .png) aus Blender exportiert, um sie in ein libgdx-Projekt zu importieren. Die Datei enthält sowohl UV- als auch normale Daten.UV-Mapping funktioniert nicht mit importierter Obj-Datei

ich die Datei in die App wie diese ziehen:

ModelLoader loader = new ObjLoader(); 
model = loader.loadModel(Gdx.files.internal("data/car.obj")); 

Das Objekt sollte wie folgt aussehen: (Ja, ich bin kein Künstler)

enter image description here

Aber es Ende sieht wie folgt aus:

enter image description here

Was ist mit meinem UV-Mapping passiert?

Antwort

1

Drehen Sie einfach die Textur vertikal und laden Sie die Textur, es funktioniert gut.

Sie können es mit Photoshop tun.

10

Verwenden Sie loader.loadModel(Gdx.files.internal("data/car.obj"), true);, um die vertikalen Texturkoordinaten umzukehren. Sie können auch vertikale Texturenkoordinaten umkehren, während Sie in das g3dx-Dateiformat konvertieren: fbx-conv -f car.obj (-f steht für vertikale Texturkoordinaten), wodurch Sie eine Datei namens car.g3db erhalten, die besser zum Rendern geeignet ist. Weitere Informationen zum Laden und Konvertieren von Modellen (und Umdrehen von Texturkoordinaten) etc. finden Sie hier: http://blog.xoppa.com/.

+0

Die Version von libgdx, die ich benutze (gestern heruntergeladen die neueste .zip) hat nicht diese Überladung von 'loadModel'. Danke, dass du den Konverter hochgebracht hast ... das ist definitiv das, was ich in Zukunft verwenden werde. Willkommen bei Stack Overflow! Danke für die Tutorials, das war meine erste Einführung in libgdx. – andypaxo

+0

Wenn Sie ObjLoader anstelle von ModelLoader verwenden, sollten Sie das Argument flipV ('ObjLoader loader = new ObjLoader();') haben. Sie können auch die allgemeineren Parameter verwenden: 'loader.loadModel (Datei, neue ObjLoaderParameters (true));'. – Xoppa