PDA

View Full Version : Get Objects Angle Relative to the screen/viewpoint


nabrahamson
03-09-2012, 08:31 AM
I am working on a problem where we have a mouse pointer in our scene that I have either oriented so that it is positioned to the normal vector of a surface, or that it points at the center of the bounding box for an object.

The pointer is modeled to look like a teardrop where the point of the teardrop is "touching" the surface of the object it is pointing at. Due to the rotation of the pointer, there are cases were the point of the teardrop are obscured by the rest of the model. To resolve this, I want to try to compare the angle vector of this teardrop model to the viewpoint to see if the model is obscured.

I think I have half of what I need by using the command

viz.MainWindow.screenToWorld([0,5,0.5]).dir

To get a vector representing what the camera is looking at. What I need is a vector in the same coordinate system as this screenToWorld direction vector to determine if the pointer is being obscured by itself.

nabrahamson
03-09-2012, 09:39 AM
I think I have come up with a solution that I'll share here:

In addition to the window vector above, I am taking the point that the mouse pointer intersects with and the center of the bounding box, and making a vector using those two points. With that vector, I can figure out the angle between the window vector.


winVec = viz.MainWindow.screenToWorld([0,5,0.5]).dir
objAngle = [bbCenter[i] - objPoint[i] for i in range(len(objPoint))]

viewAngle = Vector.cross(Vector.norm(objAngle), Vector.norm(winVec))