3

試行A

このコード

CATransform3D perspectiveTransform = CATransform3DIdentity;
perspectiveTransform.m34 = -1.0 / 1000.0;
perspectiveTransform = CATransform3DRotate(perspectiveTransform, angle / 2.0, 0.0, 1.0, 0.0);
self.sublayerTransform = perspectiveTransform;

この結果を与える

あ

赤枠がレイヤーの背景色

試行 B

このコード

CATransform3D perspectiveTransform = CATransform3DIdentity;
perspectiveTransform.m34 = -1.0 / 1000.0;
// following line is added 
perspectiveTransform = CATransform3DTranslate(perspectiveTransform, -width / 2.0, 0, 0);
perspectiveTransform = CATransform3DRotate(perspectiveTransform, angle / 2.0, 0.0, 1.0, 0.0);
self.sublayerTransform = perspectiveTransform;

この結果を与える

B

赤枠がレイヤーの背景色

では、何が問題なのですか?

「試行 A」のレンダリングされた例では、左中央から見ているため、折り目が間違った角度から見られます (左の折り目は右の折り目よりもわずかに薄くなります)。

「試行 B」のように、x 軸に変換することで、正しくレンダリングできますが、別の間違いが発生します。コンテンツが範囲外になりました (赤い四角形が境界です)。

カメラを真ん中からどうしたらいいですか?

4

1 に答える 1

-1

まあ、アンカーポイントを変更するのが一番簡単なようです。それを機能させるには、他のいくつかの変換(投稿では明らかにされていません)を変更する必要があります。

于 2012-12-16T10:26:48.273 に答える