Utility/OBJLoader: Fix OBJ uvs

This commit is contained in:
Lynix 2020-01-04 12:15:54 +01:00
parent df2a029f30
commit b3af14f65a
3 changed files with 3 additions and 4 deletions

View File

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

View File

@ -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;

View File

@ -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