diff --git a/ChangeLog.md b/ChangeLog.md index 8c74a6428..db55478ac 100644 --- a/ChangeLog.md +++ b/ChangeLog.md @@ -214,6 +214,7 @@ Nazara Engine: - ⚠ ENetHost::GetTotalReceivedPackets now returns the number of commands received (instead of the number of UDP packets received) - Added EmptyStream class, useful to measure how many bytes some writing operations will take - SegmentCollider2D: Add support for neighbors (aka "ghost vertices"), allowing to prevent seams collisions +- ⚠ OBJLoader flips UV by default, fixing a lot of models UV Nazara Development Kit: - Added ImageWidget (#139) diff --git a/examples/FirstScene/main.cpp b/examples/FirstScene/main.cpp index 0e3f8f8a2..06e9fd97c 100644 --- a/examples/FirstScene/main.cpp +++ b/examples/FirstScene/main.cpp @@ -92,10 +92,6 @@ int main() // Ce paramètre sert à indiquer la mise à l'échelle désirée lors du chargement du modèle. params.mesh.matrix.MakeScale(Nz::Vector3f(0.01f)); // Un centième de la taille originelle - // Les UVs de ce fichier sont retournées (repère OpenGL, origine coin bas-gauche) par rapport à ce que le moteur attend (haut-gauche) - // Nous devons donc indiquer au moteur de les retourner lors du chargement - params.mesh.texCoordScale.Set(1.f, -1.f); - // Nazara va par défaut optimiser les modèles pour un rendu plus rapide, cela peut prendre du temps et n'est pas nécessaire ici params.mesh.optimizeIndexBuffers = false; diff --git a/src/Nazara/Utility/Formats/OBJLoader.cpp b/src/Nazara/Utility/Formats/OBJLoader.cpp index b8ff362f1..58b2d8e0a 100644 --- a/src/Nazara/Utility/Formats/OBJLoader.cpp +++ b/src/Nazara/Utility/Formats/OBJLoader.cpp @@ -306,6 +306,8 @@ namespace Nz if (vertexIndices.texCoord > 0) { Vector2f uv = Vector2f(texCoords[vertexIndices.texCoord - 1]); + uv.y = 1.f - uv.y; //< OBJ model texcoords seems to majority start from bottom left + uvPtr[index] = Vector2f(parameters.texCoordOffset + uv * parameters.texCoordScale); } else