Backport android.graphics.Camera.setLocation()功能

时间:2013-03-12 20:18:23

标签: android graphics matrix

在我的代码中,我需要减少android.graphics.Camera的默认透视。根据官方API,默认情况下它的位置设置为(0,0,-8),但我可以使用方法setLocation(float,float,float)以便将视点退回到(0,0, - 24)并因此减少偏斜效应。

不幸的是,这种方法仅适用于API 12+并且在Twitter上确认了Romain Guy我必须手动设置矩阵值以获得相同的结果而不使用该便捷方法。所以(如果我没有错),我必须生成我自己的矩阵并将其与我从Camera对象获得的矩阵连接起来。

遗憾的是,

Camera类不是纯Java,而是在Skia 2D框架(SkCamera.hSkCamera.cpp)中实现的原生SkCamera3D类的简单JNI包装。

深入研究代码我发现这个类中的矩阵可以表示如下:

|  scaleX  skewX   transX  |
|  skewY   scaleY  transY  |
|  persp0  persp1  persp2  |

但老实说,我仍然无法理解本机代码中的所有棘手的数学,我无法弄清楚如何自己更改矩阵值以获得我想要的东西。 任何人都可以指出一些参考实现或(甚至更好)对这种矩阵如何工作的一些详细解释?

0 个答案:

没有答案