From: Brad G. <gra...@pl...> - 2009-10-23 15:43:36
|
Hi! Thanks for all the work you've done. I've been playing with Open Asset Import and it's been fun. I've attached a modified version of Sample_SimpleOpenGL.c, from samples/SimpleOpenGL/. Some models (notably "test/models/MDL/IDPO (Quake1)/tekmechbot.MDL") contained lines after import, and so the code that was in Sample_SimpleOpenGL.c:recursive_render() caused a crash because mesh->mNumVertices[2] was undefined and thus caused a bad pointer to be sent to OpenGL. I've altered "recursive_render()" so that it renders faces with 1 vertex as GL_POINTS, 2 vertices as GL_LINES, 3 vertices as GL_TRIANGLES, and 4+ as GL_POLYGON. I added code to submit normals and vertex colors if available, use ColorMaterial for vertex colors, and draw everything with smooth shading and the default OpenGL light. I've also added a little code to make rudimentary use of aiMaterial - it tries to honor DIFFUSE, SPECULAR, SHININESS, SHININESS_STRENGTH, AMBIENT, EMISSIVE, TWOSIDED, and ENABLE_WIREFRAME. display() makes a display list of the scene before rendering. recursive_render() now pushes and pops the MODELVIEW matrix so that hierarchical transforms work, and I fixed get_bounding_box_for_node so that it also saves and restores the transformation matrix successfully. I added code to center the scene. I've tried it on all the samples in test/models. It draws something reasonable for about 80% of them. (Some models appear to have CW polygons, some don't show up at all, and some look like they would only work if animations and bones were evaluated. A few of the LWO files cause my 2GB system to swap to death.) I think this is an improvement on the previous mode, in which models were displayed in wireframe and many crashed samplegl in the GL library. I'd like to offer this in place of the existing Sample_SimpleOpenGL.c, if it is acceptable. If there are changes that would make sense, let me know and I'll see if I have time to make them. (Short of, say, supporting textures.) -Brad -- Brad Grantham, http://plunk.org/~grantham/ <http://plunk.org/%7Egrantham/> |