試行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;
この結果を与える
赤枠がレイヤーの背景色
では、何が問題なのですか?
「試行 A」のレンダリングされた例では、左中央から見ているため、折り目が間違った角度から見られます (左の折り目は右の折り目よりもわずかに薄くなります)。
「試行 B」のように、x 軸に変換することで、正しくレンダリングできますが、別の間違いが発生します。コンテンツが範囲外になりました (赤い四角形が境界です)。
カメラを真ん中からどうしたらいいですか?