On Saturday, 7 March 2015 at 13:11:22 UTC, Rene Zwanenburg wrote:
On Friday, 6 March 2015 at 02:41:19 UTC, Bennet wrote:
I wrote a custom OBJ file importer which worked fairly well
however was not robust enough to support everything. I've
decided to give AssImp a shot. I followed some tutorials and
have set up my code to read in the vertices, tex coords,
normals, and indices of an OBJ cube model that I have had
success loading with my custom importer. The cube model's
faces do not render properly, instead only rendering a few
tri's of the cube. The way AssImp handles the data is
obviously a bit different than my solution because the
normals, positions/vertices, tex coords, and indices do not
match my custom solution. I would very much appreciate some
insight into why I'm having issues as all of the tutorials
I've found have matched my approach. If a picture of the
faulty rendered cube would be helpful I can work on getting a
screenshot up. Thank you.
My Asset importing class is at:
http://codebin.org/view/4d2ec4d3
The rest of my code is at (Mesh Class is in source/graphics):
https://github.com/BennetLeff/PhySim
There are some issues with your loadMesh code:
numVerts = mesh.mNumFaces * 3;
The number of vertices is independent if the number of faces.
What you're calculating here is the number of indices, which is
indeed guaranteed to be three times the number of faces since
you're asking for triangulation when loading the scene. The
number of vertices is simply:
mesh.mNumVertices
And this value should be used as size for the vertex, normal,
and texture coordinate arrays.
Then you'll need two separate loops to load the vertices and
indices. Loading the vertices is simply looping through all
vertex arrays of the source mesh and copying them to your
vertex arrays.
To load the indices you need to loop through all faces in the
source mesh, and then add the face indices to your index
buffer. Something like this:
foreach(faceIndex; 0 .. mash.mNumFaces)
{
auto face = mesh.mFaces[faceIndex];
foreach(i; 0 .. 3)
indices[faceIndex*3 + i] = face.mIndices[i];
}
I've made that edit but I'm getting lots of "nan" in my array of
vertices, textures coordinates and normals. Here's a screenshot:
http://imgur.com/lXDxFJM