动画(3)——Camera 实现3D动画

时间:2024-05-19 21:23:45

android.graphics.Camera 实现3D动画

<1>、android.hardware.Camera 是负责调用摄像头的,而android.graphics.Camera是图形方面的,是一个空间变换工具,作用类似于Matrix

<2>、常用方法

applyToCanvas(Canvas canvas) 根据当前的变换计算出相应的矩阵,然后应用到制定的画布上去,注意是由画布来设置矩阵的。

getMatrix(Matrix matrix),将Camera所做的变换用到指定matrix上
rotateX(float degree) 绕着x轴旋转degree个度数
rotateY(float degree) 绕着y轴旋转degree个度数
rotateZ(float degree) 绕着z轴旋转degree个度数
translate(float x,float y,float z) 在x、y、z坐标轴上执行变换操作
save()和restore() 保存原状态,操作完之后,恢复到原状态

Camera的处理结果只是生成一个Matrix,该Matrix用于Bitmap或Canvas绘制Bitmap时才能产生旋转或缩放的效果。

<3>Camera与Matrix的一些区别如下:

1)、Camera的rotate()相关方法是指定某一维度上旋转指定的角度。

2)、Matrix的rotate()相关方法实现的效果是顺时针旋转指定的角度;与Camera指定Z轴旋转效果相同,但方向相反。

3)、Camera的translate()方法根据某一维度上视点的位移实现图像的缩放,与Matrix的scale()相关方法作用效果相似,只是Matrix的scale()相关方法是直接指定缩放比例。

4)、Camera不支持倾斜操作,Matrix可以直接实现倾斜操作

注意: camera位于坐标点(0,0),也就是视图的左上角;camera.translate(10, 20, 30)的意思是把观察物体右移10,上移20,向前移30(即让物体远离camera,这样物体将会变小);手机中的3维:X轴是手机的水平方向,Y轴是手机的竖直方向,Z轴是垂直于手机向里的那个方向。图如下:

动画(3)——Camera 实现3D动画动画(3)——Camera 实现3D动画