In this homework you will read in model files and display them. To get started, you can provide input for which file to read by the keyboard (or just statically read in a certain file). You may use cin for this, although in graphics apps, cin is typically a very bad idea. (This is why you don't use much console input in Java as well.) However, your handin should provide a method to read in the filename that doesn't use the console window or cin. Make a global string and detect when you are in 'file input' mode for when keypresses are to be added as part of the file name rather than other kb commands. It is imperative that you do not crash from bad user input (like a bad filename). Display the mesh using GL_TRIANGLES with GL_LINE as your polygon mode. Allow the user to switch between two display modes. One mode will display all the vertices as glVertex3f() points. If a point is x,y,z you would display glVertex3f(x,y,z). The second display mode will display them as glVertex2f() points where x is transformed by -2*x/(z-2) and y is transformed by (-2*y/(z-2)). The models are available here: http://shaunramsey.com/graphics/models They follow the same format: string string string number_of_vertices_as_int float float float .... string string string number_of_faces_as_int int int int .... Change your gluOrtho calls in init and reshape to: gluOrtho2D(-1,1,-1,1); This will change your viewing area from being 'pixels' from (0,0) to (width, height) into a region between -1 and 1 in both x and y. Most models on the page fall into this region. Extra credit: - (+2) Incorporate a toggle for backface culling. glCullFace - (+3) Incorporate a toggle between point, line and fill polygon modes - (+10) Document and implement reading and displaying of more complex mesh files. Examples for full credit include .stl, .3ds and .obj. You may use other libraries and resources, but be sure to find and follow their copyright notices. Hand in: Connect this website to your hw3 website via a link. Connect your hw3 website to this website via a link. (In other words, you can go back and forth between the two pages). Include: - Instructions for keyboard and mouse inputs for this program. - Add a link to your source for this homework. - Show a screen shot of the big_spider model being displayed. - Show a screen shot of at least one other model being displayed. - Show a screen shot that demonstrates any extra credit.