6

I have exported an .obj file (along with .mtl and a .png) from Blender to import into a libgdx project. The file contains both UV and normal data.

I am pulling the file into the app like this:

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

The object should look like this: (Yes, I'm not an artist)

enter image description here

But it ends up looking like this:

enter image description here

What happened to my UV mapping?

andypaxo
  • 6,171
  • 3
  • 38
  • 53

2 Answers2

12

Use loader.loadModel(Gdx.files.internal("data/car.obj"), true); to flip the vertical texture coordinates. You can also flip vertical textures coordinates while converting to the g3dx file format: fbx-conv -f car.obj (-f is for flip vertical texture coordinates), which will give you a file called car.g3db and is more suitable for rendering. More info on how to load and convert models (and flip texture coordinates) etc. can be found here: http://blog.xoppa.com/.

Xoppa
  • 7,983
  • 1
  • 23
  • 34
  • The version of libgdx that I'm using (downloaded the latest .zip yesterday) doesn't have that overload of `loadModel`. Thanks for bringing up the converter, though... that's definitely what I'll be using going forward. Also, welcome to Stack Overflow! Also, thanks for the tutorials, that was my first introduction to libgdx. – andypaxo Jul 12 '13 at 01:44
  • 1
    If you use ObjLoader instead of ModelLoader you should have the flipV argument (`ObjLoader loader = new ObjLoader();`). You can also use the more general parameters: `loader.loadModel(file, new ObjLoaderParameters(true));`. – Xoppa Jul 12 '13 at 19:20
2

Just flip the texture vertically and load the texture it will work fine.

You can do it using photoshop.

Vikalp Jain
  • 1,419
  • 1
  • 11
  • 20