aboutsummaryrefslogtreecommitdiff
path: root/src/models.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/models.c')
-rw-r--r--src/models.c248
1 files changed, 124 insertions, 124 deletions
diff --git a/src/models.c b/src/models.c
index 8b49731d..d4b21258 100644
--- a/src/models.c
+++ b/src/models.c
@@ -56,7 +56,7 @@ extern unsigned int whiteTexture;
// Module specific Functions Declaration
//----------------------------------------------------------------------------------
static float GetHeightValue(Color pixel);
-static VertexData LoadOBJ(const char *fileName);
+static Mesh LoadOBJ(const char *fileName);
//----------------------------------------------------------------------------------
// Module Functions Definition
@@ -558,23 +558,23 @@ void DrawGizmo(Vector3 position)
Model LoadModel(const char *fileName)
{
Model model;
- VertexData vData = { 0 };
+ Mesh mesh = { 0 };
// NOTE: Initialize default data for model in case loading fails, maybe a cube?
- if (strcmp(GetExtension(fileName),"obj") == 0) vData = LoadOBJ(fileName);
+ if (strcmp(GetExtension(fileName),"obj") == 0) mesh = LoadOBJ(fileName);
else TraceLog(WARNING, "[%s] Model extension not recognized, it can't be loaded", fileName);
- // NOTE: At this point we have all vertex, texcoord, normal data for the model in vData struct
+ // NOTE: At this point we have all vertex, texcoord, normal data for the model in mesh struct
- if (vData.vertexCount == 0)
+ if (mesh.vertexCount == 0)
{
TraceLog(WARNING, "Model could not be loaded");
}
else
{
// NOTE: model properties (transform, texture, shader) are initialized inside rlglLoadModel()
- model = rlglLoadModel(vData); // Upload vertex data to GPU
+ model = rlglLoadModel(mesh); // Upload vertex data to GPU
// Now that vertex data is uploaded to GPU, we can free arrays
// NOTE 1: We don't need CPU vertex data on OpenGL 3.3 or ES2... for static meshes...
@@ -583,10 +583,10 @@ Model LoadModel(const char *fileName)
/*
if (rlGetVersion() != OPENGL_11)
{
- free(vData.vertices);
- free(vData.texcoords);
- free(vData.normals);
- free(vData.colors);
+ free(mesh.vertices);
+ free(mesh.texcoords);
+ free(mesh.normals);
+ free(mesh.colors);
}
*/
}
@@ -595,7 +595,7 @@ Model LoadModel(const char *fileName)
}
// Load a 3d model (from vertex data)
-Model LoadModelEx(VertexData data)
+Model LoadModelEx(Mesh data)
{
Model model;
@@ -610,7 +610,7 @@ Model LoadModelEx(VertexData data)
// Load a heightmap image as a 3d model
Model LoadHeightmap(Image heightmap, float maxHeight)
{
- VertexData vData;
+ Mesh mesh;
int mapX = heightmap.width;
int mapZ = heightmap.height;
@@ -621,12 +621,12 @@ Model LoadHeightmap(Image heightmap, float maxHeight)
// TODO: Consider resolution when generating model data?
int numTriangles = (mapX-1)*(mapZ-1)*2; // One quad every four pixels
- vData.vertexCount = numTriangles*3;
+ mesh.vertexCount = numTriangles*3;
- vData.vertices = (float *)malloc(vData.vertexCount*3*sizeof(float));
- vData.normals = (float *)malloc(vData.vertexCount*3*sizeof(float));
- vData.texcoords = (float *)malloc(vData.vertexCount*2*sizeof(float));
- vData.colors = (unsigned char *)malloc(vData.vertexCount*4*sizeof(unsigned char)); // Not used...
+ mesh.vertices = (float *)malloc(mesh.vertexCount*3*sizeof(float));
+ mesh.normals = (float *)malloc(mesh.vertexCount*3*sizeof(float));
+ mesh.texcoords = (float *)malloc(mesh.vertexCount*2*sizeof(float));
+ mesh.colors = (unsigned char *)malloc(mesh.vertexCount*4*sizeof(unsigned char)); // Not used...
int vCounter = 0; // Used to count vertices float by float
int tcCounter = 0; // Used to count texcoords float by float
@@ -644,51 +644,51 @@ Model LoadHeightmap(Image heightmap, float maxHeight)
//----------------------------------------------------------
// one triangle - 3 vertex
- vData.vertices[vCounter] = x;
- vData.vertices[vCounter + 1] = GetHeightValue(heightmapPixels[x + z*mapX])*scaleFactor;
- vData.vertices[vCounter + 2] = z;
+ mesh.vertices[vCounter] = x;
+ mesh.vertices[vCounter + 1] = GetHeightValue(heightmapPixels[x + z*mapX])*scaleFactor;
+ mesh.vertices[vCounter + 2] = z;
- vData.vertices[vCounter + 3] = x;
- vData.vertices[vCounter + 4] = GetHeightValue(heightmapPixels[x + (z+1)*mapX])*scaleFactor;
- vData.vertices[vCounter + 5] = z+1;
+ mesh.vertices[vCounter + 3] = x;
+ mesh.vertices[vCounter + 4] = GetHeightValue(heightmapPixels[x + (z+1)*mapX])*scaleFactor;
+ mesh.vertices[vCounter + 5] = z+1;
- vData.vertices[vCounter + 6] = x+1;
- vData.vertices[vCounter + 7] = GetHeightValue(heightmapPixels[(x+1) + z*mapX])*scaleFactor;
- vData.vertices[vCounter + 8] = z;
+ mesh.vertices[vCounter + 6] = x+1;
+ mesh.vertices[vCounter + 7] = GetHeightValue(heightmapPixels[(x+1) + z*mapX])*scaleFactor;
+ mesh.vertices[vCounter + 8] = z;
// another triangle - 3 vertex
- vData.vertices[vCounter + 9] = vData.vertices[vCounter + 6];
- vData.vertices[vCounter + 10] = vData.vertices[vCounter + 7];
- vData.vertices[vCounter + 11] = vData.vertices[vCounter + 8];
+ mesh.vertices[vCounter + 9] = mesh.vertices[vCounter + 6];
+ mesh.vertices[vCounter + 10] = mesh.vertices[vCounter + 7];
+ mesh.vertices[vCounter + 11] = mesh.vertices[vCounter + 8];
- vData.vertices[vCounter + 12] = vData.vertices[vCounter + 3];
- vData.vertices[vCounter + 13] = vData.vertices[vCounter + 4];
- vData.vertices[vCounter + 14] = vData.vertices[vCounter + 5];
+ mesh.vertices[vCounter + 12] = mesh.vertices[vCounter + 3];
+ mesh.vertices[vCounter + 13] = mesh.vertices[vCounter + 4];
+ mesh.vertices[vCounter + 14] = mesh.vertices[vCounter + 5];
- vData.vertices[vCounter + 15] = x+1;
- vData.vertices[vCounter + 16] = GetHeightValue(heightmapPixels[(x+1) + (z+1)*mapX])*scaleFactor;
- vData.vertices[vCounter + 17] = z+1;
+ mesh.vertices[vCounter + 15] = x+1;
+ mesh.vertices[vCounter + 16] = GetHeightValue(heightmapPixels[(x+1) + (z+1)*mapX])*scaleFactor;
+ mesh.vertices[vCounter + 17] = z+1;
vCounter += 18; // 6 vertex, 18 floats
// Fill texcoords array with data
//--------------------------------------------------------------
- vData.texcoords[tcCounter] = (float)x / (mapX-1);
- vData.texcoords[tcCounter + 1] = (float)z / (mapZ-1);
+ mesh.texcoords[tcCounter] = (float)x / (mapX-1);
+ mesh.texcoords[tcCounter + 1] = (float)z / (mapZ-1);
- vData.texcoords[tcCounter + 2] = (float)x / (mapX-1);
- vData.texcoords[tcCounter + 3] = (float)(z+1) / (mapZ-1);
+ mesh.texcoords[tcCounter + 2] = (float)x / (mapX-1);
+ mesh.texcoords[tcCounter + 3] = (float)(z+1) / (mapZ-1);
- vData.texcoords[tcCounter + 4] = (float)(x+1) / (mapX-1);
- vData.texcoords[tcCounter + 5] = (float)z / (mapZ-1);
+ mesh.texcoords[tcCounter + 4] = (float)(x+1) / (mapX-1);
+ mesh.texcoords[tcCounter + 5] = (float)z / (mapZ-1);
- vData.texcoords[tcCounter + 6] = vData.texcoords[tcCounter + 4];
- vData.texcoords[tcCounter + 7] = vData.texcoords[tcCounter + 5];
+ mesh.texcoords[tcCounter + 6] = mesh.texcoords[tcCounter + 4];
+ mesh.texcoords[tcCounter + 7] = mesh.texcoords[tcCounter + 5];
- vData.texcoords[tcCounter + 8] = vData.texcoords[tcCounter + 2];
- vData.texcoords[tcCounter + 9] = vData.texcoords[tcCounter + 3];
+ mesh.texcoords[tcCounter + 8] = mesh.texcoords[tcCounter + 2];
+ mesh.texcoords[tcCounter + 9] = mesh.texcoords[tcCounter + 3];
- vData.texcoords[tcCounter + 10] = (float)(x+1) / (mapX-1);
- vData.texcoords[tcCounter + 11] = (float)(z+1) / (mapZ-1);
+ mesh.texcoords[tcCounter + 10] = (float)(x+1) / (mapX-1);
+ mesh.texcoords[tcCounter + 11] = (float)(z+1) / (mapZ-1);
tcCounter += 12; // 6 texcoords, 12 floats
// Fill normals array with data
@@ -696,9 +696,9 @@ Model LoadHeightmap(Image heightmap, float maxHeight)
// NOTE: Current Model implementation doe not use normals!
for (int i = 0; i < 18; i += 3)
{
- vData.normals[nCounter + i] = 0.0f;
- vData.normals[nCounter + i + 1] = 1.0f;
- vData.normals[nCounter + i + 2] = 0.0f;
+ mesh.normals[nCounter + i] = 0.0f;
+ mesh.normals[nCounter + i + 1] = 1.0f;
+ mesh.normals[nCounter + i + 2] = 0.0f;
}
// TODO: Calculate normals in an efficient way
@@ -713,20 +713,20 @@ Model LoadHeightmap(Image heightmap, float maxHeight)
// Fill color data
// NOTE: Not used any more... just one plain color defined at DrawModel()
- for (int i = 0; i < (4*vData.vertexCount); i++) vData.colors[i] = 255;
+ for (int i = 0; i < (4*mesh.vertexCount); i++) mesh.colors[i] = 255;
- // NOTE: At this point we have all vertex, texcoord, normal data for the model in vData struct
+ // NOTE: At this point we have all vertex, texcoord, normal data for the model in mesh struct
- Model model = rlglLoadModel(vData);
+ Model model = rlglLoadModel(mesh);
// Now that vertex data is uploaded to GPU, we can free arrays
// NOTE: We don't need CPU vertex data on OpenGL 3.3 or ES2
if (rlGetVersion() != OPENGL_11)
{
- free(vData.vertices);
- free(vData.texcoords);
- free(vData.normals);
- free(vData.colors);
+ free(mesh.vertices);
+ free(mesh.texcoords);
+ free(mesh.normals);
+ free(mesh.colors);
}
return model;
@@ -735,7 +735,7 @@ Model LoadHeightmap(Image heightmap, float maxHeight)
// Load a map image as a 3d model (cubes based)
Model LoadCubicmap(Image cubicmap)
{
- VertexData vData;
+ Mesh mesh;
Color *cubicmapPixels = GetImageData(cubicmap);
@@ -1041,25 +1041,25 @@ Model LoadCubicmap(Image cubicmap)
}
// Move data from mapVertices temp arays to vertices float array
- vData.vertexCount = vCounter;
+ mesh.vertexCount = vCounter;
- vData.vertices = (float *)malloc(vData.vertexCount*3*sizeof(float));
- vData.normals = (float *)malloc(vData.vertexCount*3*sizeof(float));
- vData.texcoords = (float *)malloc(vData.vertexCount*2*sizeof(float));
- vData.colors = (unsigned char *)malloc(vData.vertexCount*4*sizeof(unsigned char)); // Not used...
+ mesh.vertices = (float *)malloc(mesh.vertexCount*3*sizeof(float));
+ mesh.normals = (float *)malloc(mesh.vertexCount*3*sizeof(float));
+ mesh.texcoords = (float *)malloc(mesh.vertexCount*2*sizeof(float));
+ mesh.colors = (unsigned char *)malloc(mesh.vertexCount*4*sizeof(unsigned char)); // Not used...
// Fill color data
// NOTE: Not used any more... just one plain color defined at DrawModel()
- for (int i = 0; i < (4*vData.vertexCount); i++) vData.colors[i] = 255;
+ for (int i = 0; i < (4*mesh.vertexCount); i++) mesh.colors[i] = 255;
int fCounter = 0;
// Move vertices data
for (int i = 0; i < vCounter; i++)
{
- vData.vertices[fCounter] = mapVertices[i].x;
- vData.vertices[fCounter + 1] = mapVertices[i].y;
- vData.vertices[fCounter + 2] = mapVertices[i].z;
+ mesh.vertices[fCounter] = mapVertices[i].x;
+ mesh.vertices[fCounter + 1] = mapVertices[i].y;
+ mesh.vertices[fCounter + 2] = mapVertices[i].z;
fCounter += 3;
}
@@ -1068,9 +1068,9 @@ Model LoadCubicmap(Image cubicmap)
// Move normals data
for (int i = 0; i < nCounter; i++)
{
- vData.normals[fCounter] = mapNormals[i].x;
- vData.normals[fCounter + 1] = mapNormals[i].y;
- vData.normals[fCounter + 2] = mapNormals[i].z;
+ mesh.normals[fCounter] = mapNormals[i].x;
+ mesh.normals[fCounter + 1] = mapNormals[i].y;
+ mesh.normals[fCounter + 2] = mapNormals[i].z;
fCounter += 3;
}
@@ -1079,8 +1079,8 @@ Model LoadCubicmap(Image cubicmap)
// Move texcoords data
for (int i = 0; i < tcCounter; i++)
{
- vData.texcoords[fCounter] = mapTexcoords[i].x;
- vData.texcoords[fCounter + 1] = mapTexcoords[i].y;
+ mesh.texcoords[fCounter] = mapTexcoords[i].x;
+ mesh.texcoords[fCounter + 1] = mapTexcoords[i].y;
fCounter += 2;
}
@@ -1090,18 +1090,18 @@ Model LoadCubicmap(Image cubicmap)
free(cubicmapPixels);
- // NOTE: At this point we have all vertex, texcoord, normal data for the model in vData struct
+ // NOTE: At this point we have all vertex, texcoord, normal data for the model in mesh struct
- Model model = rlglLoadModel(vData);
+ Model model = rlglLoadModel(mesh);
// Now that vertex data is uploaded to GPU, we can free arrays
// NOTE: We don't need CPU vertex data on OpenGL 3.3 or ES2
if (rlGetVersion() != OPENGL_11)
{
- free(vData.vertices);
- free(vData.texcoords);
- free(vData.normals);
- free(vData.colors);
+ free(mesh.vertices);
+ free(mesh.texcoords);
+ free(mesh.normals);
+ free(mesh.colors);
}
return model;
@@ -1617,9 +1617,9 @@ static float GetHeightValue(Color pixel)
}
// Load OBJ mesh data
-static VertexData LoadOBJ(const char *fileName)
+static Mesh LoadOBJ(const char *fileName)
{
- VertexData vData = { 0 };
+ Mesh mesh = { 0 };
char dataType;
char comments[200];
@@ -1636,7 +1636,7 @@ static VertexData LoadOBJ(const char *fileName)
if (objFile == NULL)
{
TraceLog(WARNING, "[%s] OBJ file could not be opened", fileName);
- return vData;
+ return mesh;
}
// First reading pass: Get numVertex, numNormals, numTexCoords, numTriangles
@@ -1747,15 +1747,15 @@ static VertexData LoadOBJ(const char *fileName)
}
// At this point all vertex data (v, vt, vn) has been gathered on midVertices, midTexCoords, midNormals
- // Now we can organize that data into our VertexData struct
+ // Now we can organize that data into our Mesh struct
- vData.vertexCount = numTriangles*3;
+ mesh.vertexCount = numTriangles*3;
// Additional arrays to store vertex data as floats
- vData.vertices = (float *)malloc(vData.vertexCount*3*sizeof(float));
- vData.texcoords = (float *)malloc(vData.vertexCount*2*sizeof(float));
- vData.normals = (float *)malloc(vData.vertexCount*3*sizeof(float));
- vData.colors = (unsigned char *)malloc(vData.vertexCount*4*sizeof(unsigned char));
+ mesh.vertices = (float *)malloc(mesh.vertexCount*3*sizeof(float));
+ mesh.texcoords = (float *)malloc(mesh.vertexCount*2*sizeof(float));
+ mesh.normals = (float *)malloc(mesh.vertexCount*3*sizeof(float));
+ mesh.colors = (unsigned char *)malloc(mesh.vertexCount*4*sizeof(unsigned char));
int vCounter = 0; // Used to count vertices float by float
int tcCounter = 0; // Used to count texcoords float by float
@@ -1783,32 +1783,32 @@ static VertexData LoadOBJ(const char *fileName)
else if (numNormals == 0) fscanf(objFile, "%i/%i %i/%i %i/%i", &vNum[0], &vtNum[0], &vNum[1], &vtNum[1], &vNum[2], &vtNum[2]);
else fscanf(objFile, "%i/%i/%i %i/%i/%i %i/%i/%i", &vNum[0], &vtNum[0], &vnNum[0], &vNum[1], &vtNum[1], &vnNum[1], &vNum[2], &vtNum[2], &vnNum[2]);
- vData.vertices[vCounter] = midVertices[vNum[0]-1].x;
- vData.vertices[vCounter + 1] = midVertices[vNum[0]-1].y;
- vData.vertices[vCounter + 2] = midVertices[vNum[0]-1].z;
+ mesh.vertices[vCounter] = midVertices[vNum[0]-1].x;
+ mesh.vertices[vCounter + 1] = midVertices[vNum[0]-1].y;
+ mesh.vertices[vCounter + 2] = midVertices[vNum[0]-1].z;
vCounter += 3;
- vData.vertices[vCounter] = midVertices[vNum[1]-1].x;
- vData.vertices[vCounter + 1] = midVertices[vNum[1]-1].y;
- vData.vertices[vCounter + 2] = midVertices[vNum[1]-1].z;
+ mesh.vertices[vCounter] = midVertices[vNum[1]-1].x;
+ mesh.vertices[vCounter + 1] = midVertices[vNum[1]-1].y;
+ mesh.vertices[vCounter + 2] = midVertices[vNum[1]-1].z;
vCounter += 3;
- vData.vertices[vCounter] = midVertices[vNum[2]-1].x;
- vData.vertices[vCounter + 1] = midVertices[vNum[2]-1].y;
- vData.vertices[vCounter + 2] = midVertices[vNum[2]-1].z;
+ mesh.vertices[vCounter] = midVertices[vNum[2]-1].x;
+ mesh.vertices[vCounter + 1] = midVertices[vNum[2]-1].y;
+ mesh.vertices[vCounter + 2] = midVertices[vNum[2]-1].z;
vCounter += 3;
if (numNormals > 0)
{
- vData.normals[nCounter] = midNormals[vnNum[0]-1].x;
- vData.normals[nCounter + 1] = midNormals[vnNum[0]-1].y;
- vData.normals[nCounter + 2] = midNormals[vnNum[0]-1].z;
+ mesh.normals[nCounter] = midNormals[vnNum[0]-1].x;
+ mesh.normals[nCounter + 1] = midNormals[vnNum[0]-1].y;
+ mesh.normals[nCounter + 2] = midNormals[vnNum[0]-1].z;
nCounter += 3;
- vData.normals[nCounter] = midNormals[vnNum[1]-1].x;
- vData.normals[nCounter + 1] = midNormals[vnNum[1]-1].y;
- vData.normals[nCounter + 2] = midNormals[vnNum[1]-1].z;
+ mesh.normals[nCounter] = midNormals[vnNum[1]-1].x;
+ mesh.normals[nCounter + 1] = midNormals[vnNum[1]-1].y;
+ mesh.normals[nCounter + 2] = midNormals[vnNum[1]-1].z;
nCounter += 3;
- vData.normals[nCounter] = midNormals[vnNum[2]-1].x;
- vData.normals[nCounter + 1] = midNormals[vnNum[2]-1].y;
- vData.normals[nCounter + 2] = midNormals[vnNum[2]-1].z;
+ mesh.normals[nCounter] = midNormals[vnNum[2]-1].x;
+ mesh.normals[nCounter + 1] = midNormals[vnNum[2]-1].y;
+ mesh.normals[nCounter + 2] = midNormals[vnNum[2]-1].z;
nCounter += 3;
}
else
@@ -1817,17 +1817,17 @@ static VertexData LoadOBJ(const char *fileName)
Vector3 norm = VectorCrossProduct(VectorSubtract(midVertices[vNum[1]-1], midVertices[vNum[0]-1]), VectorSubtract(midVertices[vNum[2]-1], midVertices[vNum[0]-1]));
VectorNormalize(&norm);
- vData.normals[nCounter] = norm.x;
- vData.normals[nCounter + 1] = norm.y;
- vData.normals[nCounter + 2] = norm.z;
+ mesh.normals[nCounter] = norm.x;
+ mesh.normals[nCounter + 1] = norm.y;
+ mesh.normals[nCounter + 2] = norm.z;
nCounter += 3;
- vData.normals[nCounter] = norm.x;
- vData.normals[nCounter + 1] = norm.y;
- vData.normals[nCounter + 2] = norm.z;
+ mesh.normals[nCounter] = norm.x;
+ mesh.normals[nCounter + 1] = norm.y;
+ mesh.normals[nCounter + 2] = norm.z;
nCounter += 3;
- vData.normals[nCounter] = norm.x;
- vData.normals[nCounter + 1] = norm.y;
- vData.normals[nCounter + 2] = norm.z;
+ mesh.normals[nCounter] = norm.x;
+ mesh.normals[nCounter + 1] = norm.y;
+ mesh.normals[nCounter + 2] = norm.z;
nCounter += 3;
}
@@ -1835,14 +1835,14 @@ static VertexData LoadOBJ(const char *fileName)
{
// NOTE: If using negative texture coordinates with a texture filter of GL_CLAMP_TO_EDGE doesn't work!
// NOTE: Texture coordinates are Y flipped upside-down
- vData.texcoords[tcCounter] = midTexCoords[vtNum[0]-1].x;
- vData.texcoords[tcCounter + 1] = 1.0f - midTexCoords[vtNum[0]-1].y;
+ mesh.texcoords[tcCounter] = midTexCoords[vtNum[0]-1].x;
+ mesh.texcoords[tcCounter + 1] = 1.0f - midTexCoords[vtNum[0]-1].y;
tcCounter += 2;
- vData.texcoords[tcCounter] = midTexCoords[vtNum[1]-1].x;
- vData.texcoords[tcCounter + 1] = 1.0f - midTexCoords[vtNum[1]-1].y;
+ mesh.texcoords[tcCounter] = midTexCoords[vtNum[1]-1].x;
+ mesh.texcoords[tcCounter + 1] = 1.0f - midTexCoords[vtNum[1]-1].y;
tcCounter += 2;
- vData.texcoords[tcCounter] = midTexCoords[vtNum[2]-1].x;
- vData.texcoords[tcCounter + 1] = 1.0f - midTexCoords[vtNum[2]-1].y;
+ mesh.texcoords[tcCounter] = midTexCoords[vtNum[2]-1].x;
+ mesh.texcoords[tcCounter + 1] = 1.0f - midTexCoords[vtNum[2]-1].y;
tcCounter += 2;
}
} break;
@@ -1853,19 +1853,19 @@ static VertexData LoadOBJ(const char *fileName)
fclose(objFile);
// Security check, just in case no normals or no texcoords defined in OBJ
- if (numTexCoords == 0) for (int i = 0; i < (2*vData.vertexCount); i++) vData.texcoords[i] = 0.0f;
+ if (numTexCoords == 0) for (int i = 0; i < (2*mesh.vertexCount); i++) mesh.texcoords[i] = 0.0f;
// NOTE: We set all vertex colors to white
// NOTE: Not used any more... just one plain color defined at DrawModel()
- for (int i = 0; i < (4*vData.vertexCount); i++) vData.colors[i] = 255;
+ for (int i = 0; i < (4*mesh.vertexCount); i++) mesh.colors[i] = 255;
// Now we can free temp mid* arrays
free(midVertices);
free(midNormals);
free(midTexCoords);
- // NOTE: At this point we have all vertex, texcoord, normal data for the model in vData struct
+ // NOTE: At this point we have all vertex, texcoord, normal data for the model in mesh struct
TraceLog(INFO, "[%s] Model loaded successfully in RAM (CPU)", fileName);
- return vData;
+ return mesh;
}