画像をご覧ください。
つまり、これは私がオンラインソースから取得したコードであり、オブジェクトを変換します。それ以外は何も分かりませんでした。私はCATransform3Dを初めて使用し、それがどのように機能するかを正確に知りたいと思っています。
CATransform3D transform = CATransform3DIdentity;
transform.m34 = 1.0 / -500;
transform = CATransform3DRotate(transform, 45.0f * M_PI / 180.0f, 0, 1, 0.0f);
_bgView.layer.transform = transform;
このコードがどのように実行されたか知りたいですか?なぜm34に値を設定したのですか?私はそれが私をさらに混乱させるある種のマトリックスであることに気づきました。また、CATransform3DRotateの引数はどういう意味ですか?
私は理解しようとしていますが、それ以上は得られません。
CATransform3Dを深く理解したい。記事、ドキュメント、または自分自身を説明することで助けてください。
どうもありがとう。
何なのかわからないm34
は見ていません。
必要なのは回転する角度だけなので、2D回転は簡単です。次に、回転はZ軸(つまり、画面の外を直接指す軸)の周りで行われます。
3D回転は異なります。角度が必要ですが、回転している1つまたは複数の軸を知る必要もあります。
CATransform3DRotate
あなたはそれに5つのパラメータを与えます...
角度(ラジアン)πラジアン= 180度3、4、および5は、各軸に適用する回転角の量です。
X軸-これは、画面の左側から画面の右側に向かう軸です。
例で適用した回転は次のとおりです...
角度= 45度(ラジアンに変換)。 X = 0 Y = 1 Z = 0
これは、45度すべてがY軸を中心に回転することを意味します。つまり、中央を下る線の周りを回転ドアのように回転します。
最後にパラメータ...「1、0、0」がある場合は、外輪船のように回転します。 「あなたから離れていく。」
最後に、「0、0、1」がある場合、画面上でキャサリンホイールのように回転します。
値を組み合わせて、「0、1、1」を指定して、2つの軸を中心に回転を適用することもできます。
行列のw行は透視投影です。学校で、ドットを配置してドットから線を引き、それらの線に合わせて遠近法を描くような遠近法を描いたことはありますか? m34値は、そのドットが配置される場所を決定するため、遠近法を提供します。 -50のように設定すると、より大きな違いがわかります。
M34の設定は、このポイントのZ軸の値に関連しています。したがって、ポイントは(0、0、-1/500)に配置されます。
これがSwift https://github.com/paulz/PerspectiveTransform の私のプロジェクトで、CATransform3Dの計算に役立ち、サンプルアプリと遊び場が含まれています。
cALayer変換プロパティをアニメーション化するために使用できます。
マトリックスの作成とその他の可能な解決策の詳細については、wiki: https://github.com/paulz/PerspectiveTransform/wiki を参照してください。
この質問をありがとう、それは私がその問題を抱えているだけでなく、私のプロジェクトを始めるのを助けました!