Android使用OpenGL ES2.0绘制3D图像或者加载3D模型时,为了达到立体效果往往需要设置视见转换矩阵和投影转换矩阵即
Matrix.setLookAtM(mVMatrix, 0, cx, cy, cz, tx, ty, tz, upx, upy, upz) 和 Matrix.frustumM(mProjMatrix, 0, left, right, bottom, top, near, far)。学习这两个方法需要先了解openGL的3D坐标系,可以自行百度
Matrix.setLookAtM
需要填充的参数
float cx, //摄像机位置x
float cy, //摄像机位置y
float cz, //摄像机位置z
float tx, //摄像机目标点x
float ty, //摄像机目标点y
float tz, //摄像机目标点z
float upx, //摄像机UP向量X分量
float upy, //摄像机UP向量Y分量
float upz //摄像机UP向量Z分量
这个方法看起来很抽象,设几组参数对比一下效果,摄像机目标点,即绘制的3D图像,tx,ty, tz,为图像的中心位置设置到原点即 tx = 0,ty = 0, tz = 0; 摄像机的位置,即观察者眼睛的位置 我们设置在目标点的正前方(位置z轴正方向),cx = 0, cy = 0, cz = 10; 接着是摄像机顶部的方向了,如下图,很显然相机旋转,up的方向就会改变,这样就会会影响到绘制图像的角度。
例如设置up方向为y轴正方向,upx = 0,upy