android.graphics.Camera 是一個可以讓你將 2D 物件在 3D 空間中移動,並將在其移動後的結果,畫在螢幕上的類別。
聽起來很有趣,是嗎?例如,最上面那張美女圖,你可以看出來,他是將原本的圖,以 Y 軸為軸心,旋轉約 30 度後,所畫出來的結果。
打開 android.graphics.Camera 的說明文件,你會發現,這個文件中只有下面這些 APIs 列表,什麼說明都沒有。
- //Public Constructors
- Camera()
- //Public Methods
- void applyToCanvas(Canvas canvas)
- float dotWithNormal(float dx, float dy, float dz)
- void getMatrix(Matrix matrix)
- void restore()
- void rotateX(float deg)
- void rotateY(float deg)
- void rotateZ(float deg)
- void save()
- void translate(float x, float y, float z)
用個例子來解釋這個 Camera 類別的用法,是最適當的。底下這個簡單的程式片段的結果,就是最上面那張圖。其中的 m_bmp 就是原本的美女圖。
- camera = new Camera();
- camera.translate(0, 0, 50);
- camera.rotateY(30);
- Matrix matrix3D = new Matrix();
- camera.getMatrix(matrix3D);
- canvas.save();
- canvas.translate(100, 100);
- canvas.concat(matrix3D);
- canvas.drawBitmap(m_bmp, 0, 0, null);
- canvas.restore();
在 Android ,要做出 3D 的效果,你當然可以用 OpenGL 的函式。不過,如果你需要更快的顯示速度,或者只是要做個簡單的 3D 特效,那千萬不要忘了這個 android.graphics.Camera。
資料來源:
http://ysl-paradise.blogspot.com/2010/03/iv-3d.html
沒有留言:
張貼留言