1

iOS コード:

UIView のレイヤーの 3D 変換を準備する iOS 上の作業コードがあります。

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());

私の主な問題:

t.m34 = -1.0f/500.0f主な問題は、Androidでパースペクティブを設定する方法がわからないことです。ドキュメントを読むのはやや不可解であり、私の最善の策は を使用することCamera.setLocation()です。また、ドキュメントは単位について何も述べていないので、適切な値は何でしょうか?

もう 1 つの問題はsetLocation()、API 12 からのみ利用できることです。そのため、代わりに (または何らかの変換を介して) マトリックスで手動で設定する必要があります。どのようにアイデアはありますか?

最終コメント:

おそらくもっと多くの問題があることを認識しています..translate()単位、変換順序、および一般的に、Android ではカメラを変換するが iOS ではオブジェクトを変換するという問題などです。これらすべてについては後で説明します:)

4

0 に答える 0