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 ではオブジェクトを変換するという問題などです。これらすべてについては後で説明します:)