Преобразование матрицы преобразования OpenGL для работы на CATransformLayer
Я использовал SDK дополненной реальности от String для проекта. По сути, этот SDK передает набор маркеров для изображений, которые он распознает, и связанное с ним преобразование матрицы OpenGL, в котором указано, где находится изображение маркера в трехмерном пространстве на экране камеры iPhone. Я пытаюсь нанести на карту CATransformLayer
на фоне сцены, чтобы она была правильно ориентирована на изображение маркера и воспроизводила видео на своем месте. Я думал, что я мог бы сделать это с помощью AVPlayerLayer
сидя внутри CATransformLayer
который имеет матричное преобразование (преобразуется в CATransform3D
) применяется к нему.
Насколько я могу судить, это не очень хорошо работает - я не могу получить логическое отображение между исходной матрицей OpenGL и матрицей, стоящей за CATransform3D
,
Вы можете видеть, что довольно сложно делать прямое преобразование между маркерным преобразованием и CATransform3D
объект (синий бит - мой слой):
Я предположил, что они были одинаковыми (мне несколько раз говорили, что они идентичны из-за CALayer
GL бэк). Это правда? Я что-то пропустил?
Я могу вернуться к рендерингу моего видео в качестве текстуры на сцене, но было бы здорово поддерживать высокий уровень, если это возможно - какие-либо идеи / комментарии / мысли?