Hi
Your application has to be able to store a mesh (and probably other types as well - but a mesh is generic enough to get you started), which will then be edited. There are a few options on what your mesh should have, with the most common approach being to store geometric information as a list of vertices and triangles.
Having the mesh in play, you can use OpenGL to render it. Tip: if you structure your code nicely, the scene graph part and the rendering/ui part of your application will be conveniently separated into different modules, so that you may re-use the scene handling classes in other applications, involving, say, a different rendering library.
To edit the model, the use case starts from the UI end: thisl will be done with opengl, and you’ll have to implement picking (there are a few tutorials on thins I think). Picking will return you a list of entities that are selected. These entities may be individual vertices, triangles, a whole mesh, etc, depending on how you implement it and what you want to do.
In your case, you want to pick vertices. As you suggest, you will come across the situation where you pick a vertex, and there are more vertices hidden behind it (a term describing this is occlusion: the vertices in the back are occluded by the vertex in the front). This is a ui decision you’ll have to make: you can just pikc the front vertex or give the user the opportunity to choose which vertex she wants, etc. IF you only pick the front vertex, the user will have to rotate the view slightly, and un-hide the vertices in the back, in order to pick them. Sometimes, this works well actually.
Following the picking, you’ll have to modify the vertex, so you’re looking at dragging it to a different location. The new coordinates of the vetrex will be stored in your mesh scene object in memory.
Two bits of functionality that you’ll have to think about straightaway are loading and saving the models. Loading because you’ll have to get real data into your app to work with. And saving because the user will have to preserve all the changes they made with your edit tool. Of course, as soon as you start talking loading and saving, you also have to think about what format you’ll be using. (Lots of tutorials on this too, another tip: there is no right or wrong, there are pros and cons with everything, and be prepared to code in support for more than one format, as this will simplify things a lot in the future, if you’re thinking any seriously about this.)
The glutsphere is a utility functionality to create some geometry to play with. If you want to edit that, you’ll have to find its vertices and triangles, create a mesh object and add it in your scene, and then edit it as any other scene entity in your app.
I hope this helps.
madm.