diff options
-rw-r--r-- | source/gameengine/Ketsji/KX_Camera.cpp | 11 |
1 files changed, 8 insertions, 3 deletions
diff --git a/source/gameengine/Ketsji/KX_Camera.cpp b/source/gameengine/Ketsji/KX_Camera.cpp index 1d6c5f77ae5..ba4d6e22872 100644 --- a/source/gameengine/Ketsji/KX_Camera.cpp +++ b/source/gameengine/Ketsji/KX_Camera.cpp @@ -1047,8 +1047,10 @@ KX_PYMETHODDEF_DOC_O(KX_Camera, getScreenPosition, gluProject(vect[0], vect[1], vect[2], modelmatrix, projmatrix, viewport, &win[0], &win[1], &win[2]); - vect[0] = win[0] / (viewport[0] + viewport[2]); - vect[1] = win[1] / (viewport[1] + viewport[3]); + vect[0] = (win[0] - viewport[0]) / viewport[2]; + vect[1] = (win[1] - viewport[1]) / viewport[3]; + + vect[1] = 1.0 - vect[1]; //to follow Blender window coordinate system (Top-Down) PyObject* ret = PyTuple_New(2); if(ret){ @@ -1068,6 +1070,8 @@ KX_PYMETHODDEF_DOC_VARARGS(KX_Camera, getScreenVect, if (!PyArg_ParseTuple(args,"dd:getScreenVect",&x,&y)) return NULL; + y = 1.0 - y; //to follow Blender window coordinate system (Top-Down) + MT_Vector3 vect; MT_Point3 campos, screenpos; @@ -1127,7 +1131,8 @@ KX_PYMETHODDEF_DOC_VARARGS(KX_Camera, getScreenRay, } Py_DECREF(argValue); - dist *= -1.0; + dist = -dist; + vect += this->GetCameraLocation(); argValue = (propName?PyTuple_New(3):PyTuple_New(2)); if (argValue) { |