Вопрос

В чем смысл M34 структуры Catransform3D, я только знаю, что это может изменить перспективу, но в чем смысл, когда значение равно -0.001 и 0,001?

Это было полезно?

Решение

Вы можете найти полную информацию здесь. Отказ Обратите внимание, что Apple использует обратный порядок умножения для проекции (относительно данной ссылки), поэтому все мультипликации матрицы обращаются, и все матрицы транспонированы.

Краткое описание значения:

  • M34 = 1 / Z расстояние до проекционной плоскости (1 / еz. Срок в ссылке ссылки)
  • + Для оси z - к зрителю, что приводит к тому, что «выглядит в зеркале», когда используете -
  • Центр проекции (0,0,0) плюс любые переводы, которые вы настроили

Другие советы

Я прочитал некоторые статьи, включая этот: https://developer.apple.com/library/content/documentation/cocoa/coneptual/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