Instance Update Item Info Globals Table of Contents

Viewport Info

Availability  LightWave® 7.5
Component  Layout
Header  lwrender.h

The viewport info global returns information about the state of Layout's OpenGL viewports. The data is read-only, but you can set the parameters using navigation and display commands.

Global Call

   LWViewportInfo *vpinfo;
   vpinfo = global( LWVIEWPORTINFO_GLOBAL, GFUSE_TRANSIENT );
The global function returns a pointer to an LWViewportInfo.
   typedef struct st_LWViewportInfo {
        int             numViewports;
        int             (*type)  (int);
        unsigned int    (*flags) (int);
        void            (*pos)   (int, LWDVector);
        void            (*xfrm)  (int, double mat[9]);
        void            (*clip)  (int, double *hither, double *yon);
        void            (*rect)  (int, int *left, int *top, int *width, int *height);
        int             (*viewLevel)   (int);
        int             (*projection)  (int, LWDMatrix4 projection, LWDMatrix4 inverse_projection);
        int             (*modelview)   (int, LWDMatrix4 modelview, LWDMatrix4 inverse_modelview);
        int             (*project)     (int, LWDVector world, double *winx, double *winy, double *winz);
        int             (*unproject)   (int, double winx, double winy, double winz, LWDVector world);
        double          (*pixelSize)   (int, double pixels, LWDVector refpos);
        int             (*handleSize)  (int);
        double          (*gridSize)    (int);
        LWItemID        (*viewItem)    (int);
   } LWViewportInfo;
numViewports
The number of viewports visible in the Layout interface.

view = type( i )
The type of view in the ith viewport. It will be one of the following:
LVVIEWT_NONE
LVVIEWT_TOP
LVVIEWT_BOTTOM
LVVIEWT_BACK
LVVIEWT_FRONT
LVVIEWT_RIGHT
LVVIEWT_LEFT
LVVIEWT_PERSPECTIVE
LVVIEWT_LIGHT
LVVIEWT_CAMERA
LVVIEWT_SCHEMATIC

flags = flags( i )

Returns a set of bit flags for the  ith viewport. These can be any combination of the following. 
LWVIEWF_CENTER
LWVIEWF_WEIGHTSHADE
LWVIEWF_XRAY
pos(i, spot)
Fills the spot vector with the viewing position of the  ith viewport.

xfrm( i, mat[9] )
Fills mat with a 3x3 transformation from viewport coordinates to world coordinates for the  ith viewport. Note that from LW9.0, the vpinfo->projection() and vpinfo->modelview() functions should be preferred, as the vpinfo->xfrm() function may not produce correct results for non-perspective camera views.

clip( i, &hither, &yon )
Fills hither and yon with the near and far Z clipping distances for the  ith viewport. 

rect( i, &left, &top, &width, &height )
Fills left, top, width and height with pixel coordinates of the  ith viewport. 

level = viewLevel( i )
Returns the view level for the  ith viewport. The returned value is one of the LWOVIS_* values.

result = projection( i, projection, inverse_projection )
Fills the matrices with the projection matrix and the inverse of the projection matrix for the   ith viewport. It is safe to pass in NULL for either of the matrices. The matrices follow the OpenGL convention of m[column][row] with column vectors. Returns 1 if the asked for matrices were retrieved, 0 on failure which usually means that an inverse matrix was asked for for a matrix that could not be inverted.

result = modelview( i, modelview, inverse_modelview )
Fills the matrices with the modelview matrix and the inverse of the modelview matrix for the   ith viewport. It is safe to pass in NULL for either of the matrices. The matrices follow the OpenGL convention of m[column][row] with column vectors. Returns 1 if the asked for matrices were retrieved, 0 on failure which usually means that an inverse matrix was asked for for a matrix that could not be inverted.

result = project( i, world, &winx, &winy, &winz )
Computes the projected position of the given world coordinates for the  ith viewport. The computed winx and winy position is in pixels, relative to the upper-left corner of the viewport. Returns 1 if the projection was successful, 0 otherwise. Note that the resulting coordinates may fall outside of the viewport.

result = unproject( i, winx, winy, winz, world )
Computes the world coordinates of a given pixel position of the   ith viewport. The winz value ranges from 0 for a spot on the near clipping plane, to 1 for a spot on the far clipping plane. Note that drawing on the near or far clipping plane may cause flickering due to floating point imprecision causing random clipping. Returns 1 if the projection was successful, 0 otherwise. Failure is typically caused by the viewport having a non-invertible modelview or projection matrix.

size = pixelSize( i, pixels, refpos )
Returns the world size of the given number of pixels at the reference position in world for the ith viewport. A sphere with a diameter of the returned size, placed at the reference position, will have a diameter of approximately the given number of pixels when projected.

size = handleSize( i )
Returns the standard handle size for the ith viewport, in pixels. This is the size used for example for drawing the translation and rotation tool handles.

size = gridSize( i )
Returns the size of the grid spacing for the ith viewport, in metres.

item = viewItem( i )
For viewports which have a view through a scene item (LWVIEWT_LIGHT and LWVIEWT_CAMERA) the ID of the item is returned. Otherwise LWITEM_NULL is returned.