سؤال

ما معنى M34 للهيكل catransform3d ، وأنا أعلم فقط أنه يمكن أن يغير المنظور ، ولكن ما هو المعنى عندما تكون القيمة -0.001 و 0.001؟

هل كانت مفيدة؟

المحلول

يمكنك العثور على التفاصيل الكاملة هنا. لاحظ أن Apple تستخدم ترتيب الضرب العكسي للإسقاط (نسبة إلى الرابط المحدد) بحيث يتم عكس جميع مضاعفات المصفوفة ونقل جميع المصفوفات.

وصف قصير للمعنى:

  • M34 = 1/Z المسافة إلى مستوى الإسقاط (1/Eض المصطلح في الرابط المرجعي)
  • + بالنسبة للمحور z هو نحو المشاهد ، مما يؤدي إلى شعور "النظر في المرآة" عند استخدام -
  • مركز الإسقاط هو (0،0،0) بالإضافة إلى أي ترجمات قمت بإعدادها

نصائح أخرى

قرأت بعض المقالات بما في ذلك هذا واحد: https://developer.apple.com/library/content/documentation/cocoa/conceptual/coreanimation_guide/advancedAnimationTricks/AdvancedAnimationTricks.html#//apple_ref/doc/uid/tp40004514-ch8-sw13

قراراتي هنا:

جهات:

  • eye - المسافة من الشاشة
  • scale - المقياس المرئي للكائن المحول
  • distance - المسافة إلى الكائن المحول

ربط الصيغ:

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

مثال على الحوسبة z للحجم المرغوب لمسافة العين المحددة:

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);
}
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top