Question

Quel est le sens de M34 de la structure CATransform3D, je ne sais que cela peut changer la perspective, mais quel est le sens lorsque la valeur est -0,001 et 0,001?

Était-ce utile?

La solution

Vous trouverez tous les détails . Notez que Apple utilise l'ordre inverse de multiplication pour la projection (par rapport au lien donné) si toutes les matrices multiplications sont inversées et toutes les matrices sont transposés.

Une brève description du sens:

  • m34 = distance 1 / z au plan de projection (1 / e z terme dans la liaison de référence)
  • + pour l'axe z est vers le spectateur, entraînant une sensation « regardant dans le miroir » lors de l'utilisation -
  • centre de projection est (0,0,0) plus les traductions que vous mis en place

Autres conseils

Je lis quelques articles dont celui-ci: https://developer.apple.com/library/content/documentation/Cocoa/Conceptual/CoreAnimation_guide/AdvancedAnimationTricks/AdvancedAnimationTricks.html#//apple_ref/doc/uid / TP40004514-CH8-SW13

Mes résolutions est ici:

Entités:

  • eye - distance de l'écran à l'oeil
  • scale - échelle visuelle de l'objet transformé
  • distance - distance pour objet transformé

formules de raccordement:

  • scale = eye / (eye + distance)
  • distance = eye * (1.0/scale - scale)
  • eye = distance / (1.0/scale - scale)

Exemple de calcul de la distance z à l'échelle désencollé de la distance de l'oeil sélectionné:

CATransform3D transformByScaleAndEye(CGFloat scale, CGFloat eye) {
    CATransform3D t = CATransform3DIdentity;
    t.m34 = -1.0 / eye;
    CGFloat distance = -eye*(1.0/scale - scale);
    return CATransform3DTranslate(t, 0, 0, distance);
}
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top