uses such a context and it does not behave correctly with your hack, then you've got a big problem and need to start all over. So check before releasing that you are not messing up things like that because if s.o. This example uses the mousemove event to get two values from the MapMouseEvent object: the x-y point coordinates of the mouse cursor on the HTML map. But it is possible to get to the point to cast a ray into the scene from where the cursor hovers, I used it to implement smooth scrolling with the middle mouse button in layouts which allow scrolling, and also to check if I was hovering above certain objects in the scene, but this last function I moved into a context because this method had problems working together with the "artUserPaintCtx" (many redraws, very slow).
This is very flexible, but you need to check without the Maya API if you are above a viewport (classname ModelView) so this is really a hack and not the preferred way to work with Maya.
#OPENGL GETTING MOUSE COORDINATES INSTALL#
This is a bit difficult to implement, but very rewarding.Īnother way to do it is by positioning your code in a layer between of the OS and Maya, in the case of Windows you would install a Mouse Hook, in order to intercept mouse messages sent to from the OS to Maya. This can be worked around if your context also implements the move tool and the selection tool, which are usually the normal contexts in which Maya is in. There is a limitation on this, you won't be notified when the mouse hovers over the viewport, only on press, release, and drag.Īnother limitation is that you need to enter that context, which means that you need to exit whichever context you were in, like move, select, rotate. I used GLLINES to create a kind of crosshair to see where my variables thought the mouse cursor was, and it is overshooting the actual position. But those would be a bad choice of types for implementing these objects for graphics.You can do this with a MPxSelectionContext or a MPxContext. This also emphasizes the scalability of vectors, a feature that points lack.Īside: a more apt analogy in programming might be to consider points as *pointers and vectors as ptrdiff_ts. The mouse position is given in viewport coordinates with the. You could enforce the distinction to some degree by using integers for points and floating point for vector components. In this next example we get the mouse position when the left mouse button is pressed on the image. The points have only position, whereas the vectors have only direction - even though they can have the exact same representation in the computer. You can also kind of think of this as the points are unsigned quantities and the vectors are signed quantities.
You can only get a point from a vector if you attach it (ie. After performing all operations jump out of the program by simply pressing the Esc key on the keyboard.
You can think of this as the points are the real dots on the screen and vectors are just invisible arrows. To change the color of the circle, simply right-click on the mouse. 1 * Point = a conceptual mistake, you can reverse a vector but not a point I need to get the actual cursor position in the window that I drag an icon onto so that when I release left click, it drops it into the GL window at that. OpenGL supports this by storing transformations in a user-controllable stack. To do this, we will be specifying transformations that must be applied to our world during the rendering process. 1 * Vector = -Vector, the reverse directionĮg. 2 OpenGL Transformation Stacks We think of viewing in OpenGL as specifying properties about a hypothetical camera inside our scene. One way to approach this topic that can help is to distinguish between points and vectors as distinct types and make sure your operations fit into one of the "known good" scenarios:Įg.