2013-07-11 27 views
5

Ho esportato un file obj (insieme a .mtl e a .png) da Blender per importarlo in un progetto libgdx. Il file contiene sia i dati UV che quelli normali.La mappatura UV non funziona sul file obj importato

sto tirando il file in app come questo:

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

L'oggetto dovrebbe essere simile a questo: (Sì, io non sono un artista)

enter image description here

Ma finisce per assomigliare a questo:

enter image description here

Cosa è successo alla mia mappatura UV?

risposta

1

Basta capovolgere la trama verticalmente e caricare la trama funzionerà correttamente.

È possibile farlo utilizzando Photoshop.

10

Utilizzare loader.loadModel(Gdx.files.internal("data/car.obj"), true); per capovolgere le coordinate della trama verticale. È anche possibile capovolgere le coordinate delle trame verticali durante la conversione nel formato di file g3dx: fbx-conv -f car.obj (-f è per le coordinate di texture verticali flip), che ti daranno un file chiamato car.g3db ed è più adatto per il rendering. Maggiori informazioni su come caricare e convertire i modelli (e capovolgere le coordinate della trama) ecc. Possono essere trovate qui: http://blog.xoppa.com/.

+0

La versione di libgdx che sto usando (scaricata l'ultima .zip ieri) non ha quel sovraccarico di 'loadModel'. Grazie per aver portato il convertitore, però ... è sicuramente quello che userò andando avanti. Inoltre, benvenuto a Stack Overflow! Inoltre, grazie per le esercitazioni, quella è stata la mia prima introduzione a libgdx. – andypaxo

+0

Se si utilizza ObjLoader anziché ModelLoader, si dovrebbe avere l'argomento flipV ('ObjLoader loader = new ObjLoader();'). È inoltre possibile utilizzare i parametri più generali: 'loader.loadModel (file, nuovo ObjLoaderParameters (true));'. – Xoppa