To main page | 3dengine.org

# Center of Viewport

**Center of viewport** (or **camera center**) is X,Y coordinates right in the middle of current screen space in OpenGL can be found as:

**viewport** is the viewport matrix that can be loaded via **glGetIntegerv** call.

## Why not (Width of window / 2) ?

There are some times that center of window isn't really center of "virtual camera", like when you are drawing multiple views of the same scene - there might be 2,3,4 or more "camera centers", each in the middle of it's respective viewport.

## 3D world coordinates

In real math,

## 3D coordinates of current camera center in PyOpenGL

1 way:

(viewport[2]-viewport[0])/2 , (viewport[3]-viewport[1])/2where

C(x,y,z) = -R' * t , where ' is transposebut remember about column major ordering. R is rotation matrix (modelview's upper left 3x3 matrix, transposed), t is translation 3x1 matrix (in terms of right-up-back vectors).

gluUnProject( (viewport[2]-viewport[0])/2 , (viewport[3]-viewport[1])/2, .... )Another:

import numpy buffer = glGetDoublev(GL_MODELVIEW_MATRIX) # [1] cXYZ = -1 * numpy.mat(buffer[:3,:3]) * numpy.mat(buffer[3,:3]).T[1] Avoid glGetFloat in Python