使用android.graphics.Camera将iOS CATransform3D透视图(字段m34)移植到Android

时间:2013-06-25 09:02:45

标签: android ios 3d

iOS代码:

我在iOS上有工作代码,为UIView的图层准备3D转换:

CATransform3D t = CATransform3DIdentity;
t.m34 = -1.0f/500.0f;
t = CATransform3DTranslate(t, 10.0f, 20.0f, 0.0f);
t = CATransform3DRotate(t, 0.25f * M_PI, -1.0f, 0.0f, 0.0f);

我正在尝试将上述代码移植到Android。我正在尝试准备android.view.animation.Transformation t,它会做同样的事情。它将由ViewGroup.getChildStaticTransformation(View v, Transformation t)执行。

未完成的Android代码:

t.clear();
t.setTransformationType(Transformation.TYPE_MATRIX);
android.graphics.Camera camera = new android.graphics.Camera();
// set perspective (m34) here.. how??
camera.translate(10.0f, 20.0f, 0.0f);
camera.rotateX(-1.0f * Math.toDegrees(0.25 * Math.PI));
camera.getMatrix(t.getMatrix());

我的主要问题:

主要问题是我不确定如何在Android中设置透视t.m34 = -1.0f/500.0f。阅读docs是相当神秘的,我最好的选择是使用Camera.setLocation()。此外,文档没有说明单位,那么什么是合适的价值呢?

另一个问题是setLocation()只能从API 12获得,所以我真的需要在Matrix中手动设置它(或通过一些转换)。有什么想法吗?

最终评论:

我知道可能存在更多问题..例如translate()单位,转换顺序以及我们在Android中转换相机但在iOS中转换对象的问题。我稍后会谈到所有这些:)

0 个答案:

没有答案