这个教程短小精悍,开头讲了C++的一些基础知识,略过。
接下来是OSG的知识:
View Matrix
用于把局部坐标变换到世界坐标,或者说把模型坐标变换到用户坐标。
由以下三个分量决定:
1、Eye:视点的位置
2、Center:视线上的一参考点
3、Up:向上的方向
设置方法:
【OpenGL】--> glTranslate()、glRotate()、gluLookAt();
【OSG】-->
osg::Camera::setViewMatrix ();
或
osg::Camera::setViewMatrixAsLookAt();
Projection Matrix
投影矩阵,向二维空间(屏幕)投影,有两种投影方式:
1、平行投影,或者叫正投影(正交orthogonal)
2、透视(perspective)投影,构建一个视锥体(平截头体)
设置方法:
【OpenGL】--> glOrtho()、gluOrtho2D()、glFrustum()、gluPerspective();
【OSG】-->
osg::Camera::setProjectionMatrix();
osg::Camera::setProjectionMatrixAsOrtho();
osg::Camera::setProjectionMatrixAsOrtho2D();
osg::Camera::setProjectionMatrixAsFrustum();
osg::Camera::setProjectionMatrixAsPerspective();
Window Matrix
绘图区域并不一定是整个窗口,通过视口来指定绘图区域。
设置视口:
【OpenGL】--> glViewport()
【OSG】--> osg::Camera::setViewport()
3D空间坐标转换成2D屏幕坐标
MVPW = ViewMatrix * ProjectionMatrix * WindowMatrix
M是模型顶点三位坐标;VPW是三个矩阵;
通过修改这三个矩阵,可以实现漫游、拾取、HUD、多视图、多通道等。