Hi guys, I know there’s heaps of hits on picking on google but I’ve got some questions that I’ve been unable to find answers for so here it goes:
I’m obviously interested in getting some picking happening in my application. I’m aware that ray tracing is the best method so that’s the direction that I’m leaning and I more or less understand the pseudo code for ray tracing… up until the point of actually getting it to work with my display lists. What I mean by that is:
1.) How do I determine which display list a triangle belongs to? The way I see it:
for(iterate through display lists)
{
perform a ray triangle intercept test
if(hit occors)
return(object index) //we found a hit
}
Given this pseudo code, I don’t understand how this is any different to simply doing something along the lines of (I’m just trying to implement a button click detection):
for(iterate through display lists)
{
if(mouse click is < right most point of display list coord && mouse click > left most point of display list coordinate && mouse click < upper most point of display list coordinates && mouse click is > bottom most point of dsiplay list
return(object index) //we found a hit
}
Obviously this isn't the most elegant solution but it will work but it will also require a lot of stuffing around in terms of doing #defines or writing a lot of switch case statements later on to do certain things if a certain button is clicked, so it becomes quite big and ugly.
Can someone explain a way of doing box picking without having so much hard coding? Just trying to make a simply button interface.
2.) How do I access a display list vertex? Say I want to do something along the lines of:
vector ReturnListObjectCoordinates(GLuint ListObject)
{
return vector;
}