Domanda

Qual è il significato di m34 della struttura CATransform3D, so solo che può cambiare la prospettiva, ma qual è il significato quando il valore è -0,001 e 0,001?

È stato utile?

Soluzione

Puoi trovare tutti i dettagli Qui.Tieni presente che Apple utilizza l'ordine di moltiplicazione invertito per la proiezione (relativo al collegamento fornito), quindi tutte le moltiplicazioni di matrice vengono invertite e tutte le matrici vengono trasposte.

Una breve descrizione del significato:

  • m34 = 1/z distanza dal piano di proiezione (1/ez termine nel link di riferimento)
  • + perché l'asse z è rivolto verso lo spettatore, dando la sensazione di "guardarsi allo specchio" quando si utilizza -
  • il centro di proiezione è (0,0,0) più eventuali traduzioni impostate

Altri suggerimenti

Ho letto alcuni articoli, tra cui questa: https://developer.apple.com/library/content/documentation/Cocoa/Conceptual/CoreAnimation_guide/AdvancedAnimationTricks/AdvancedAnimationTricks.html#//apple_ref/doc/uid / TP40004514-CH8-SW13

I miei risoluzioni è qui:

Entità:

  • eye - distanza da schermo a occhio
  • scale - scala visiva di oggetto trasformato
  • distance - distanza di oggetto trasformato

Collegamento formule:

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

Esempio di calcolo Z-distance per la scala desized di distanza dell'occhio selezionato:

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);
}
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top